類別結構中的不完整類型
將物件封裝在自身內部可能是一種有用的設計模式,但在嘗試定義一個物件時會出現一個常見錯誤具有相同類型成員的類別。考慮以下範例:
class A { private: A member; }
編譯時遇到「型別不完整」錯誤。這是因為,在定義成員變數時,A 類別本身仍處於定義過程中,導致其類型未定義。
但是,使用指向類別類型的指標可以避免這個問題:
class A { private: A* member; }
這是因為,在宣告指標時,編譯器將A 辨識為有效的類別名,從而允許「指向A 的指標」類型
如果需要非指標成員類型,可以採用替代方法:
class A;
這通知編譯器A 是一個類別類型,允許它作為非指標成員引用:
class B { private: A member; };
class A { private: boost::shared_ptr<A> member; };
雖然指針對於引用自引用類類型可能很方便,但了解「不完整類型」錯誤的根本原因對於設計健壯且高效的物件導向結構至關重要。
以上是為什麼定義相同類型的類別成員會導致「類型不完整」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!