В настоящее время я работаю над 2D SFML-игрой и получаю нарушение прав доступа, которое, кажется, не может обернуться. Я получаю сообщение об ошибке при создании класса SpriteManager
.
sf::Sprite *SpriteManager::getSprite(const std::string &name){
auto it = Sprites.find(name);
if (it == Sprites.end())
{
sf::Sprite *sp = NULL;
sf::Texture tex;
if (tex.loadFromFile(name))
{ //Access violation reading location
sp->setTexture(tex); //Get Access Violation here
setSprite(name, sp);
}
else {
return NULL;
}
delete tex;
return sp;
}
return it->second;
Цель здесь - вызвать getSprite("filename")
, и он должен проверить, находится ли он уже в моем неупорядоченном массиве спрайтов, если нет, то должен создать / загрузить текстуру, назначить ее спрайту, добавить спрайт в массив и верните его.
Точное исключение:
Исключение, выданное в 0x0F314626 (sfml-graphics-d-2.dll) в Game.exe:
0xC0000005: Место чтения нарушения доступа 0x000000FC.
Я ссылаюсь на это руководство по YouTube и конвертирую его в SFML.
https://youtu.be/9pQ99zLKDx0?t=10m20s
Я также получаю все другие ошибки, связанные с этим sf::Texture tex
. Если я удаляю строку sp->setTexture(tex);
, я получаю нарушение прав доступа при записи tex.loadFromFile(name)
.
Я все еще довольно новичок в программировании, и у меня нет большого опыта устранения проблем с нарушениями прав доступа. Я ценю помощь.