다음 코드에서 개인 소멸자가있는 개체를 삭제하는 것이 가능한 방법은 무엇입니까? 실제 프로그램을 다음 샘플로 축소했지만 여전히 컴파일되고 작동합니다.개인 소멸자가있는 개체 삭제
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 주() 다음은 컴파일러 오류가 발생합니다. 그렇지 않으면, 나는 단지'경고 C4150 : 불완전한 타입 'SomeClass'에 대한 포인터 삭제; '소위 말하는 소위가 없습니다. – Naveen
@ Naveen : 예상대로입니다. 불완전한 유형이 한 가지 문제입니다. 개인 소멸자는 또 다른 소멸자입니다. 각각에는 자체 진단 메시지가 있습니다. 'SomeClass'의 정의를 옮겨서 둘 사이를 전환합니다. – AnT