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

时间:2013-03-25 04:06:06

标签: c++

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

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

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

2 个答案:

答案 0 :(得分:1)

前向声明,例如:

struct State;
struct Derivative;

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

如果您希望保留现在的课程,则必须包含定义结构状态的头文件。

否则,切换到指针!

答案 1 :(得分:0)

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

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