現在有兩個類要相互應用時,會出現各種各樣的問題,首先看第乙個例子:
#ifndef ah
#define ah
class b;
class a
~a()
};#endif
標頭檔案a.h包含class a如上:
#ifndef bh
#define bh
class b ;
#endif
標頭檔案b.h包含classb
此時編譯就會產生類似上面的警告資訊:warning c4150: 刪除指向不完整「b」型別的指標;沒有呼叫析構函式
此時因為在class a 中的b 的宣告是依賴b的前置宣告,而不是#include"b.h"所以,b對a來說是不可見的,因此無法呼叫析構函式。
如果這時class a 和class b相互應用物件:如下**:
a.h
b.h#ifndef ah
#define ah
class b;
class a ;
#endif
#ifndef bh
#define bh
#include "a.h"
class b ;
#endif
b 對於a來說還是不可見的,所以定義會報錯;即使在a.h中包含#include"b.h"這時會出現相互包含的問題,相互的定義都無效。
此種狀況的解決利用前置宣告定義的那個類中的保持另外乙個類的引用定義為指標,定義指標時不需要對那個類的定義可見
c 中兩個類互相引用的問題
最近在改乙個c 程式的時候碰到一條警告資訊,警告資訊為 刪除指向不完整 q2dtorusnode 型別的指標 沒有呼叫析構函式 1 c users lxw desktop dragonfly第二階段實驗 最終的實驗版本 實驗目錄 dragonfly modify src q2dtorus.h 6 參...
c 中兩個類互相引用的問題
最近在改乙個c 程式的時候碰到一條警告資訊,警告資訊為 刪除指向不完整 q2dtorusnode 型別的指標 沒有呼叫析構函式 1 c users lxw desktop dragonfly第二階段實驗 最終的實驗版本 實驗目錄 dragonfly modify src q2dtorus.h 6 參...
C 中兩個類互相引用
一 問題描述 現在有兩個類a和b需要定義,定義a的時候需要用到b,定義b的時候需要用到a。二 分析 a和b的定義和呼叫都放在乙個檔案中肯定是不可以的,這樣就會造成兩個迴圈呼叫的死迴圈。根本原因是 定義a的時候,a的裡面有b,所以就需要去檢視b的佔空間大小,但是檢視的時候又發現需要知道a的佔空間大小,...