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

error C2079: 'X::x' uses undefined struct 'T'

本文关键字:未定义 结构 C2079 错误      更新时间:2023-10-16

下面的例子是错误的,因为X使用未定义的struct T

struct T;
struct X {
    X() { }
    T x;
};
struct T
{
    T() { w = new X(); }
    X *w;
};
int main() { }

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

交换它们并概述T的构造函数。这样,TX在需要的地方都完成了。

struct X;
struct T
{
    T();
    X *w;
};
struct X {
    X() { }
    T x;
};
T::T() { w = new X(); }
int main() { }