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

passing enum in constructor as an argument

本文关键字:参数 枚举 构造函数      更新时间:2023-10-16

枚举在全局范围内声明如下,PSLGVertex::P SLGVertex()构造函数抱怨最后一个参数,即它的"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)

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

使用普通OTHER_VERTEX

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

 PSLGVertexType::OTHER_VERTEX

而只是

 OTHER_VERTEX

在 C++11 中,您的代码会很好,因为成员同时放置在封闭作用域(为了向后兼容)和内部枚举作用域中。

C++11 也有新的作用域枚举,你可以在维基百科上阅读。