类定义中产生编译器错误的结构实例

Instance of struct inside class definition producing compiler error

本文关键字:错误 结构 实例 编译器 定义      更新时间:2023-10-16

在头文件中,我有一些效果:

class MoveableObject
{
   public:
    static float Gravity;
    static float JumpSpeed;
    static float MoveSpeed;
    struct State;
    struct Derivative;
    State current;
    State previous;
};

当尝试编译时,我得到错误:

12:9: error: field 'current' has incomplete type
13:9: error: field 'previous' has incomplete type
这可能是一个非常基本的错误,但我被难住了。谢谢。

前向声明,例如:

struct State;
struct Derivative;

只适用于指针或引用的声明(因为编译器总是知道指针或引用的大小;但是它不能猜测用户定义类型的大小)。

如果你想保持你的类现在的样子,你必须包含定义结构体State的头文件。

否则,切换到指针!

在问题中的代码中,StateMovableObject内部的嵌套类型。为了能够在MovableObject中创建State类型的成员,State的定义必须内联到MovableObject的定义中:

class MovableObject {
public:
   struct State { ... };
   State current;
};