在头文件中,我有一些效果:
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
这可能是一个非常基本的错误,但我很难过。感谢。
答案 0 :(得分:1)
前向声明,例如:
struct State;
struct Derivative;
只有在操作指针或引用时才会用于声明(因为编译器总是知道指针或引用的大小;但是它无法猜测用户定义类型的大小)。
如果您希望保留现在的课程,则必须包含定义结构状态的头文件。
否则,切换到指针!
答案 1 :(得分:0)
在问题的代码中,State
是MovableObject
内的嵌套类型。为了能够在State
内创建MovableObject
类型的成员,必须在State
的定义中内联MovableObject
的定义:
class MovableObject {
public:
struct State { ... };
State current;
};