在构造函数中传递枚举作为参数

时间:2013-10-29 06:56:30

标签: c++ enums arguments

枚举在全局范围内声明如下,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)

2 个答案:

答案 0 :(得分:1)

您正在使用PSLGVertexType::,它告诉编译器PSLGVertexType是一个类/结构或命名空间,但它们都不是。

使用普通OTHER_VERTEX

答案 1 :(得分:0)

在C ++ - 03中,enum成员被放置在封闭范围内。所以不要说

 PSLGVertexType::OTHER_VERTEX

,而只是

 OTHER_VERTEX

在C ++ 11中,你的代码没问题,因为成员被放在封闭范围内(为了向后兼容)和内部枚举范围。

C ++ 11还有新的范围的枚举,您可以阅读on Wikipedia