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