2012-03-14 150 views
3

是否可以轉發聲明在另一個前向聲明的類中聲明的類?前向聲明的類成員的前向聲明

基本上,我有這樣的事情

//A.h 
class A 
{ 
... 
    struct B 
    { 
    ... 
    }; 
}; 

,現在我要聲明另一個類這樣

//Q.h 

class A; 
struct A::B; 

class Q 
{ 
    A::B* Foo(); 
}; 
+1

難道僅僅編譯上面的代碼並自己嘗試一下很難嗎? – mfontanini 2012-03-14 12:13:29

+1

@fontanini啊。但它可靠地工作嗎?在所有編譯器上?根據標準合法嗎? – 2012-03-14 12:15:06

+0

我嘗試過,自然。編譯器說「使用未定義的類型A」。 – obamator 2012-03-14 12:15:42

回答

4

不,不能這樣做。要訪問A的成員,必須對其進行定義,無論成員是類型,數據還是功能。