0

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

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

这可能是一个非常基本的错误,但我很难过。谢谢。

4

2 回答 2

1

前向声明,例如:

struct State;
struct Derivative;

仅在您操作指针或引用时才适用于声明(因为编译器总是知道指针或引用的大小;但是它无法猜测用户定义类型的大小)。

如果你希望你的类保持现在的样子,你必须包含定义结构状态的头文件。

否则,切换到指针!

于 2013-03-25T04:08:22.737 回答
0

在问题的代码中,State是一个嵌套类型 inside MovableObject。为了能够在定义中创建类型的成员,必须在定义中内State联:MovableObjectStateMovableObject

class MovableObject {
public:
   struct State { ... };
   State current;
};
于 2013-03-25T04:20:06.827 回答