错误C2079:' X :: x'使用未定义的结构' T'

时间:2015-10-23 11:27:34

标签: c++ incomplete-type

以下示例出错,因为on使用了未定义的X

struct T

我可以解决此问题的一种方法是使用struct T; struct X { X() { } T x; }; struct T { T() { w = new X(); } X *w; }; int main() { } 中的指针成员而不是struct X的完整类型。是否有任何棘手的方法来解决这个问题而不改变代码中的任何类型?

1 个答案:

答案 0 :(得分:6)

交换它们并概述T的构造函数。这样,TX在需要时都是完整的。

struct X;

struct T
{
    T();

    X *w;

};

struct X {

    X() { }

    T x;
};

T::T() { w = new X(); }

int main() { }