我目前正在开发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")
,它应该检查它是否已经在我的Sprite的无序数组中,如果不是,则应该创建/加载纹理,将其分配给sprite,然后将sprite添加到数组并返回它。
抛出的确切异常是:
Game.exe中的0x0F314626(sfml-graphics-d-2.dll)引发异常: 0xC0000005:访问冲突读取位置0x000000FC。
我正在参考这个YouTube教程,并将其转换为SFML。 https://youtu.be/9pQ99zLKDx0?t=10m20s
关于此sf::Texture tex
,我还遇到其他各种错误。如果删除sp->setTexture(tex);
行,则会在tex.loadFromFile(name)
处出现访问写入冲突。
我对编程还是很陌生,并且我对故障排除访问冲突没有太多经验。感谢您的帮助。