// a.h 標頭檔案
#pragma once
class a
;// b.h 標頭檔案
#pragma onceclass a;class b
;
在類 b 的宣告標頭檔案中必須前置宣告類 a,否則,編譯器報:語法錯誤,識別符號 a。
// a.h 標頭檔案
#pragma once
class a
;// b.h 標頭檔案
#pragma once
class a;
class b
private:
a *pa; // ok
};
編譯器報錯,不知道 a 的定義。
// a.h 標頭檔案
#pragma once
class a
;// b.h 標頭檔案
#pragma once
class a;
class b
;
編譯器報錯,不知道 a 的定義。
// a.h 標頭檔案
#pragma once
class a
;// b.h 標頭檔案
#pragma once
class a;
class b
private:
a &refa; // ok
};
2、3的錯誤原因是一樣的。因為編譯器不知道 a 的型別資訊,所以不知道 a的具體長度,因此不能分配空間。在編譯期,編譯器必須知道 a 的大小,才能在構造 a 例項時分配具體大小的空間。注:並非只在建立例項時才必須知道b型別的大小,編譯時,也必須知道。
1 、4正確的原因是一樣的。因為宣告的 a 的指標 pa 或者宣告 a 的引用(引用是由指標來實現的),任何型別的指標或引用變數的大小都是確定的,所以編譯器可以知道其大小。
typedef 向前宣告 用typedef宣告型別
定義 可以用typedef宣告乙個新的型別名來代替已有的型別名。用法 typedef int integer 指定用識別符號integer代表int型別 typedef float real 指定用識別符號代表float型別 然後integer a real b 與語句int a float b 是...
C 類宣告 類前置宣告
參考自 關於前置型別宣告的注意點 一 class b class a class b 上述 能夠通過編譯。二 class b class a class b 上述 報錯。error list c2079 a adata uses undefined class b c2027 use of unde...
php類的宣告
回想一下學習php這麼久以來,剛開始那會一直搞不懂類 內部屬性 外部屬性現在從頭來個詳細的介紹。如下 123 4567 8910 header content type text html charset utf 8 class guests function getname function se...