2015-10-29 2 views
-3

Я хочу сохранить свои объекты в векторе. Но когда я очищаю вектор, я хочу, чтобы объект деструктор вызывался, но я не хочу, чтобы некоторые из его деструкторов членов не вызывались? Как я могу это достичь?Сделать деструктор объекта не вызовом деструктора участника?

class Officer 
{ 
public: 
    CPed* m_pOfficer; 
    CVehicle* m_pPatrolVeh; 
    char m_pCallSign[16]; 
    unsigned short m_nUnitNum; 
} 

Я не хочу m_pOfficer и m_pPatrolVeh деструкторов будет называться.

+0

Я не знаю, почему вы хотите это сделать, но если вы не назовете 'delete m_pOfficer;' в деструкторе 'Officer', они не будут удалены, если экземпляр' Officer' будет удален. –

ответ

0

Если эти 2 заявления ...

delete m_pOfficer; 
delete m_pPatrolVeh; 

... отсутствуют внутри деструктора сотрудника затем все, что было указано на эти указатели не будут уничтожены при разрушении объектов офицерских. Вопрос в том, есть ли у вас что-то еще, указывающее на эти данные?

С точки зрения дизайна, это не то, что можно было бы поощрять. Может быть, вы можете рассказать нам больше о своей цели.

+0

Мой код вводится в игру. Таким образом, CPed и CVehicle являются классами, созданными в игре. Я не хочу их удалять, потому что в игре все еще есть дескриптор их, и это приведет к краху игры. Поэтому я хочу уничтожить класс Officer, не касаясь указателей CPed и CVehicle, потому что рука позаботится об этом. –

+0

Да, до тех пор, пока вы не вызываете delete на этих классах внутри деструктора, не должно быть никаких проблем, по крайней мере, в теории. – dspfnder