мой 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;
Inorder для удаления объекта он выходит из строя
с этим сообщением
Необработанное исключение в 0x55111BBE (SFML-графики-й -2.dll) в SpaceDroid.exe: 0xC0000005: Место считывания нарушения доступа 0xFEEEFEF2.
Я думаю, что ваш главный вопрос верен, но в вашем ответе есть две вещи, которые неточны. Во-первых, указатель «void» не является правильным термином. Вероятно, вы имели в виду * доступ к ** ** висящему ** указателю *. Во-вторых, это скорее всего вопрос фразировки, но, проверяя равенство с 'nullptr' (или' 0' в C++ 98), вам действительно нужно установить ваш указатель на 'nullptr' в какой-то момент, как правило, вы делаете' delete ptr; ptr = nullptr; '. – Hiura