2012-03-14 125 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的成员,必须对其进行定义,无论成员是类型,数据还是功能。