一个前向声明的类成员的前向声明

4

能否在另一个前向声明的类中前向声明一个类?

基本上,我的代码看起来像这样:

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

现在我想声明另一个类,就像这样:
//Q.h

class A;
struct A::B;

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

1
编译上面的代码并自己尝试一下难道很难吗? - mfontanini
1
@fontanini 啊。但是它可靠吗?在所有编译器上都可以使用吗?根据标准,它是否合法? - Konrad Rudolph
1
仅仅尝试编译它,你就会发现它无法编译。因此:但它能可靠地工作吗?不,它无法编译。在所有编译器上都是如此吗?不,它无法编译。根据标准,它是否合法?不,它无法编译,因此不能合法。 - mfontanini
6
“它无法编译,因此不能合法” - 胡说八道。 - Konrad Rudolph
1
@fontanini:其他人已经评论了标准兼容性方面,所以我不会再谈论这个问题。但是我同意你的看法,当它无法通过测试时,“可靠工作”就很快被评估出来了! - Matthieu M.
显示剩余3条评论
1个回答

4

不行,无法实现。无论成员是类型、数据还是函数,访问 A 的成员都需要定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接