1. 程式人生 > >C++ 類宣告 類前置宣告

C++ 類宣告 類前置宣告

參考自:https://www.cnblogs.com/fwycmengsoft/p/4061989.html

關於前置型別宣告的注意點:

程式碼一:

class B;

class A
{
public:
B* aData;
A(B* b) :aData(b) {}
};

class B {};

上述程式碼能夠通過編譯。

程式碼二:

class B;

class A
{
public:
B aData;
A(B b) :aData(b) {}
};

class B {};

上述程式碼報錯。Error List:

C2079 'A::aData' uses undefined class 'B'

C2027 use of undefined type 'B'

C2439 ‘A::aData': member could not be initialized

問題總結:上述兩段程式碼中僅僅相關了一個指標,而編譯結果不同。

結論:前置型別宣告只能作為指標或者引用,不能定義類的物件,所以也不能呼叫物件中的方法(包括建構函式)。