1樓:張翼德
這要分class B的宣告(.h)和實現(.cpp)檔案兩個地方:
如果你在class B的宣告(.h)裡沒有用到任何class A 的成員, 比如就像你問題裡寫的那樣,只是用到了class A的名字,那你只要在class B前面宣告:
class A;
讓compiler知道 「A是個class」 就行了,不需要包含A的標頭檔案。因為實現 class A的指標,不需要知道class A本身有多大。
但是在class B的實現(.cpp)裡,還是要包含兩個類的標頭檔案,因為這時你會用到A的成員變數,compiler需要知道class A 的布局。
(假設你已經知道每個標頭檔案都要 #pragma once避免重複包含。)
2樓:蔡傑
不管如何設計,都應該避免你的繼任者遇到下面這個問題:
「臥槽,這裡怎麼有A,B兩個類來實現這件事情,我到底應該new哪乙個還是兩個都new還是怎麼地啊。。。」
所以,不管內部如何實現,請做好封裝。。
至於A,B的h檔案互相include,是不要緊的。。
#ifdef會的吧?或者#program once?
在定義B前宣告A就可以了。
3樓:
B不需要包含A標頭檔案,因為B裡面只有A指標,編譯器不需要知道A的定義,在編譯器編譯B時,A是incomplete type並且合法。
C 在類中能定義本身型別的成員嗎?
番茄.go 至少有兩種情況是允許的。指標靜態成員變數 Member.cpp include classA AA a int main 執行 g Wall O2 o Member Member.cpp Member An object of class A.An object of class A.A...
為什麼 C 中,基類指標可以指向派生類物件?
WangKX 語法就這麼規定這叫多型性,如果往深點說,因為子類物件一般比父類物件大,因此這麼指並沒問題,但反過來不行比如子類指標指向父類物件 馬東啥梅來著 不同型別的指標在記憶體中所佔大小是相同的,區別在於編譯器對於指標的解釋是不同的。乙個指標指向某個類的物件,實際上是指向該物件所佔記憶體的首位址位...
Python中既然可以直接通過父類名呼叫父類方法為什麼還會存在super函式?
拾人牙慧 不要一說到 super 就想到父類,super 指的是 MRO Method Resolution Order,它代表了類繼承的順序 中的下乙個類!def super cls,inst mro inst.class mro return mro mro.index cls 1 它的設計目的...