리소스 로더와 관리자를 작성하려고합니다. (예, 내가 "토르"에 대해 알고있는 "학습"프로젝트입니다.) 그리고 나는 뭔가 조합이 아닌 노동 조합을 실험하기 시작했습니다. 나는 아주 자주 사용한다. 나는 texture/font를 포함하는 union을 가진 resource라는 클래스를 생성했다. 텍스처가 올바르게로드됩니다. 그러나 글꼴이 액세스 위반을 throw합니다.SFML의 글꼴에 대한 리소스 조합이 액세스 위반을 throw합니다.
Exception thrown at 0x00C5DBE0 in Project.exe: 0xC0000005: Access violation reading location 0x00000004.
다음은 저의 완전한 예입니다. EDIT :: 업데이트 된 코드는 문제를 해결합니다. Evan은 노조의 첫 번째 요소 만 기본 구성되기 때문에 이것이 아래에 설명했습니다.
#include <SFML/Graphics.hpp>
class Resource
{
public:
union
{
sf::Texture t;
sf::Font f;
};
Resource(sf::Font font = sf::Font()) : f(font)
{ }
~Resource()
{ }
};
int main()
{
Resource font;
Resource tex;
if (!tex.t.loadFromFile("player.png")) {} //! Works great!
//doError
if (!font.f.loadFromFile("blocks.ttf")) {} //! Throws access violation.
//doError
return 0;
}
과 같이 수동으로 수행해야합니다 : Texture와 sf :: Font는 어떤 일이 일어나고 있는지를 말하기는 불가능하지만, f가 제대로 구축되지 않았다고 생각합니다. – evan
그 중 일부는 SFML 라이브러리입니다. 위에 설명한 것처럼 실제로는 기본 생성자를 사용하여 생성 할 수 있습니다. – Reborn
문제가 SFML 수업인지 또는 문제인지 확인해 보셨습니까? 문제를'string'과'vector'로 구현하려고 시도했는데 문제가있었습니다. stl을 사용하여 문제를 재현 할 수 있다면 더 많은 사람들에게 다가 갈 수 있습니다. –