2013-04-29 70 views
1

我有一個基類的一個在頭文件阿正向聲明一個子類

class A{}; 
在A.cpp

我有幾個亞類:

class B: public A{}; 
class C: public A{}; 

我想實例類型B和C在一個單獨的文件中,但我不明白怎麼樣,除非我在我的其他文件中包含A.cpp。如果我向前聲明B和C A.H這樣的:

class B; 
class C; 

然後實體化類不知道它從A派生我將如何解決這個問題?

感謝, 埃裏克

+1

我看到它的方式,如果我在.cpp文件中放入某些東西,那就是我不關心任何其他能夠看到的文件。如果我希望另一個文件能夠實例化B和C,我將它與A(或單獨的頭文件)一起放在頭文件中 – giogadi 2013-04-29 15:51:15

回答

0

您需要例如阿頭文件中聲明A和包括文件到B.cpp和C.cpp,還有如果你有一些非inline功能在定義A(功能在A聲明隱含inline),你應該創建A.cpp,包括有啊以及與在A.cpp

+0

另一個類(D.cpp中的D)如何知道B和C存在並且是A的子類,但是如果D.cpp只包含Ah和B,C是在單獨的文件中定義的? – 2013-04-29 15:56:32

+0

@EricKulcyk如果您需要將'B'和'C'暴露給不同cpp文件中的其他類,則還需要在.h文件中聲明它們。規則很簡單,如果您需要從多個.cpp中授予該類的訪問權限,請將其聲明在標題中,並在您使用該類的任何地方包含該標題。 – alexrider 2013-04-29 15:58:45

+0

我想我沒有聲明B和C兩次,一次在頭文件中,一次在.cpp文件中如何做到這一點感到困惑。似乎解決方案是將聲明放在B.h中,並在B.cpp中使用B :: func(),對吧? – 2013-04-29 16:11:36

0

創建一個文件啊

定義這些功能

創建文件A.cpp,包括阿(如果需要的話)

創建文件了Bh和Ch

包括ah,在他們兩人

定義類A類A,B,C在AH,BH章分別

寫成員函數, B和C在A.cpp,B.cpp和C.cpp 分別

創建一個主文件和包括了Bh和Ch

在主文件中實例化B和C的對象