0
我Rockclass如何删除对象在SFML
void rock::create(sf::Vector2f pos)
{
tex.loadFromFile("Images/meteorBig.png");
spr.setTexture(tex);
spr.setPosition(sf::Vector2f(pos.x, pos.y));
std::cout << pos.x << std::endl;
}
void rock::remove()
{
}
void rock::draw(sf::RenderWindow &window)
{
spr.move(0.0f, +.05f);
window.draw(spr);
}
我的主类
rock* rob = new rock();
rob->create(sf::Vector2f(300.0f + rand() % 50 + 10, 0.0f));
和渲染我有
rob->draw(mywindow);
,并在碰撞检查我有
if (bo.sprite.getGlobalBounds().intersects(rob->spr.getGlobalBounds()))
{
cout << "Collides" << endl;
delete rob;
}
当过我的子弹打在岩石上,其调试碰撞完美的,但是当我使用delete rob;
序删除对象崩溃
与此消息
在0x55111BBE未处理的异常(SFML图形-d -2.dll) SpaceDroid.exe:0xC0000005:访问冲突读取位置 0xFEEEFEF2。
我认为你的主要观点是正确的,但有两件事情在你的答案中是不精确的。首先,“空白”指针不是正确的术语。你可能意思是*来访问一个**摇晃的**指针*。其次,它可能只是一个短语的问题,但是在某些时候你实际上需要将指针设置为'nullptr',通常你会'删除ptr',并且检查'nullptr'(或C++ 98中的'0')是否相等。 ptr = nullptr;'。 – Hiura