Место чтения нарушения доступа к программе SFML - PullRequest
0 голосов
/ 16 сентября 2018

В настоящее время я работаю над 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).
Я все еще довольно новичок в программировании, и у меня нет большого опыта устранения проблем с нарушениями прав доступа. Я ценю помощь.

...