C++ 前向声明的类成员的前向声明

C++ 前向声明的类成员的前向声明,c++,C++,是否可以向前声明在另一个向前声明的类中声明的类 基本上,我有这样的东西 //A.h class A { ... struct B { ... }; }; //Q.h class A; struct A::B; class Q { A::B* Foo(); }; 现在我想声明另一个类似这样的类 //A.h class A { ... struct B { ... }; }; //Q.h class A; struc

是否可以向前声明在另一个向前声明的类中声明的类

基本上,我有这样的东西

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

class A;
struct A::B;

class Q
{
    A::B* Foo();
};
现在我想声明另一个类似这样的类

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

class A;
struct A::B;

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

不,这是不可能的。要访问
A
的成员,无论该成员是类型、数据还是函数,都必须对其进行定义。

只需编译上面的代码并亲自试用是否有那么困难?@fontanini Ah。但它工作可靠吗?在所有编译器上?根据标准,它合法吗?只要试着编译它,你就可以看到它不编译。因此:但是它工作可靠吗?不,它不编译。在所有编译器上?不,它不编译。根据标准,它合法吗?不,它不编译,所以它不合法。@Fontanii“它不编译,所以它不合法”-胡说。@Fontanii:其他人已经对标准合规性方面发表了评论,所以我不会去那里。我确实同意你的观点,工作可靠,但是当它没有通过测试时会很快得到评估!