【发布时间】:2011-04-28 02:13:18
【问题描述】:
我有一种情况,A 引用了在 B 中定义的类 C,而 C 有一个类 B 的实例。
当我尝试编译下面的代码时,我得到“field a has incomplete type”。我认为这是因为编译器不知道它应该为 A 的实例分配多少内存。
class A;
class B {
public:
class C {
A a;
};
};
class A {
A(const B::C& _c)
: c(_c)
{}
const B::C& c;
};
但是当我尝试编译它时,我得到“C in class B does not name a type”:
class B;
class B::C;
class A {
A(const B::C& _c)
: c(_c)
{}
const B::C& c;
};
class B {
public:
class C {
A a;
};
};
如何让编译器相信B::C 是一个真实类型?
【问题讨论】: