以下示例出错,因为on
使用了未定义的X
struct T
我可以解决此问题的一种方法是使用struct T;
struct X {
X() { }
T x;
};
struct T
{
T() { w = new X(); }
X *w;
};
int main() { }
中的指针成员而不是struct X
的完整类型。是否有任何棘手的方法来解决这个问题而不改变代码中的任何类型?
答案 0 :(得分:6)
交换它们并概述T
的构造函数。这样,T
和X
在需要时都是完整的。
struct X;
struct T
{
T();
X *w;
};
struct X {
X() { }
T x;
};
T::T() { w = new X(); }
int main() { }