枚举在全局范围内声明如下,PSLGVertex :: PSLGVertex()构造函数抱怨其“PSLGVertexType”不是类或命名空间的最后一个参数“
我在这里做错了什么?
enum PSLGVertexType {
REFLEX_VERTEX,
CONVEX_VERTEX,
MOVING_STEINER_VERTEX,
MULTI_STEINER_VERTEX,
RESTING_STEINER_VERTEX,
OTHER_VERTEX
};
构造函数
PSLGVertex::PSLGVertex() : mark(false), oriPosition(0, 0), speed(0, 0),
startTime(0.0),firstin(NULL), firstout(NULL),type(PSLGVertexType::OTHER_VERTEX)
答案 0 :(得分:1)
您正在使用PSLGVertexType::
,它告诉编译器PSLGVertexType
是一个类/结构或命名空间,但它们都不是。
使用普通OTHER_VERTEX
。
答案 1 :(得分:0)
在C ++ - 03中,enum
成员被放置在封闭范围内。所以不要说
PSLGVertexType::OTHER_VERTEX
,而只是
OTHER_VERTEX
在C ++ 11中,你的代码没问题,因为成员被放在封闭范围内(为了向后兼容)和内部枚举范围。
C ++ 11还有新的范围的枚举,您可以阅读on Wikipedia。