下面的代碼會導致這個問題:
class XX;
XX *pX = new XX();
delete pX; // Warning C4150
以上的代碼會導致這個C4150警告, 原因就是你的類聲明不完整, 編譯器只是把A加入到符號表並標記A爲一個class,編譯器並不知道類的大小,成員函數等其他信息。
如果只是聲明指針, 在特定平臺下指針的大小是確定的所以沒有問題。 但是如果調用delete來刪除的時候,
就需要知道它的信息了, 比如就是這個類的析構函數和這個類在整個內存塊中的大小。
解決方法就是把聲明瞭class XX具體信息的頭文件加上去。