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

cpx*_*cpx 2 c++ incomplete-type

以下示例出错,因为X使用了undefinedstruct T

struct T;

struct X {

    X() { }

    T x;
};

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

    X *w;

};

int main() { }
Run Code Online (Sandbox Code Playgroud)

我可以解决这个问题的一种方法是使用指针成员struct X而不是完整类型T *x.有没有任何棘手的方法来解决这个问题而不改变代码中的任何类型?

rig*_*old 6

交换它们并勾勒出构造函数T.这样,T并且X在需要的地方都完整.

struct X;

struct T
{
    T();

    X *w;

};

struct X {

    X() { }

    T x;
};

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

int main() { }
Run Code Online (Sandbox Code Playgroud)