2017-06-04 102 views
2

有時我使用嵌套類foreward聲明:錯誤地使用前向聲明?

class A; 

class B 
{ 
    private: 
    A* object_A; 
    public: 
    B(){} 
}; 

的問題:如果我現在在C類使用正B類(B聲明,並在這一點上的定義)聲明的使用率會發生什麼?這是否會導致B類中的任何問題,因爲它被定義(與執行方法等),但使用前聲明C類?以下代碼片段中的語法class B;是否以某種方式覆蓋了先前聲明的,已定義的和已實現的類B

class B; 

class C 
{ 
    private: 
    B* object_B; 
    public: 
    C(){} 
}; 
+0

你爲什麼不嘗試告訴我們。 –

+0

似乎工作。但也許我沒有看到所有的後果。 – Lemonbonbon

+2

「前向聲明」沒有任何「錯誤用法」。如果編譯器需要完整的類型*,它會告訴你。 – EJP

回答

3

是否語法類B;在下面的代碼片段中以某種方式覆蓋了之前聲明的,已定義和實現的類B?

遠期聲明是不是覆蓋。它只是給編譯器提示類型定義是在某處實現的。對於用戶定義的指針類型,編譯器不需要定義,但需要知道對象的類型。