以下代碼將導致C4624。但是你可以看到D不是B的子類。爲什麼仍然有這個警告?謝謝!當使用組合而不是繼承時,爲什麼我得到C4624(基類析構函數無法訪問)?
class B {
// Uncomment the following line to resolve.
// public:
~B();
};
class D {B b;}; // C4624 B's destructor not public
有關警告的詳細信息:
C4624:「派生類」:未能生成析構函數,因爲一個基類的析構函數是不可訪問
析構函數是不是在一個基類訪問,因此不是爲派生類生成的。任何嘗試在堆棧上創建此類型的對象都會導致編譯器錯誤。
錯誤消息似乎是錯誤的,但如果忽略「基類」部分,錯誤是合法的。 –
爲什麼你不想公開B的析構函數? –
我知道這是不正確的,我不想這樣做。我只是想在這裏發佈:http://stackoverflow.com/a/13576544/304115 po – fresky