Comment est-il possible de supprimer un objet avec un destructeur privé dans le code suivant? J'ai réduit le programme réel à l'exemple suivant, mais il compile et fonctionne toujours.Suppression d'un objet avec un destructeur privé
class SomeClass;
int main(int argc, char *argv[])
{
SomeClass* boo = 0; // in real program it will be valid pointer
delete boo; // how it can work?
return -1;
}
class SomeClass
{
private:
~SomeClass() {}; // ! private destructor !
};
Interesting..if Je propose la définition de la classe ci-dessus principale(), il renvoie une erreur du compilateur. Sinon, je viens d'obtenir un 'C4150 d'avertissement: suppression du pointeur vers le type incomplet 'SomeClass'; aucun destructeur appelé ' – Naveen
@Naveen: C'est prévu. Le type incomplet est un problème. Le destructeur privé en est un autre. Chacun a son propre message de diagnostic. Vous basculez entre les deux en déplaçant la définition de 'SomeClass'. – AnT