EDIT: Подождите ... Я не понял, что эта функция является членом класс CXFileEntity. Это не похоже на статический метод. Поэтому, чтобы вызвать эту функцию, вам уже нужно создать экземпляр объекта CXFileEntity! Поэтому вполне вероятно, что вы абсолютно не хотите удалять или создавать объекты CXFileEntity внутри этого метода. (Если вы действительно позволяете только одному сущности существовать одновременно, вы фактически удаляете «это», а затем пытаетесь его воссоздать. Это не работает, никоим образом, нет.)
I оставив прежний ответ в надежде, что он все равно предоставит вам некоторое представление о том, как работают указатели.
Вы бы лучше дать больше информации, такие как где и как программных перерывов.
Но это явно не так:
CXFileEntity *entity,
, потому что это означает, что новый объект выделено
entity=new CXFileEntity(d3ddev);
не будет видно вызывающим. (Объект является локальной переменной, поэтому изменения в нем не будет видно за пределами локальной области видимости.)
Попробуйте изменить код, чтобы передать объект как указатель на указатель:
CXFileEntity **entity,
, который будет означает изменение кода функции, чтобы соответствовать:
if (*entity)
{
delete *entity;
*entity=0;
}
// Create the entity
*entity=new CXFileEntity(d3ddev);
// etc.
Вы также должны изменить звонящему передать указатель на указатель. И, к счастью, убедитесь, что при первом включении указателя он инициализируется 0:
CXFileEntity *the_entity = 0;
...
Перерывы/остановки где? В этой функции? Другая функция? – dreamlax
Вне темы: Что происходит, когда 'Load' выдает исключение? У вас есть «delete» в вашем коде, это плохо. Как я уже говорил, вам нужно ** остановиться ** и получить новизну, не ориентированную на игру книгу C++, и хорошо изучить C++ * first *. Кроме того, 'delete 0;' отлично, все выше '// Create the entity' должно быть заменено на' delete entity; entity = 0; '. (Хотя, опять же, его даже не должно быть, оно должно быть чем-то вроде 'entity.reset()', где 'entity' является умным указателем.) – GManNickG
вам нужно дать больше информации. например, какие ошибки вы получаете, когда программа вылетает – thecoshman