在构造函数中传递枚举作为参数
passing enum in constructor as an argument
枚举在全局范围内声明如下,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 也有新的作用域枚举,你可以在维基百科上阅读。
相关文章:
- 有没有办法使用类的私有枚举值作为模板参数?
- 从可变参数创建枚举?
- 在运行时使用枚举器值作为模板函数的模板参数的元程序
- 基于枚举参数调用专用模板方法
- 枚举作为模板参数
- 如何将枚举类作为类模板参数包含在内?
- 如何从枚举类值中指定模板函数参数中的数组大小?
- 是否可以使用泛型枚举类型作为函数的参数?
- C++ - 使用模板类中的枚举而不带模板参数
- 将函数参数限制为某些枚举值
- C++ 成员函数的多个定义,基于枚举模板参数
- 如何根据枚举参数返回其他类型
- 枚举类别和布尔模板参数的放松constexpr要求
- C++ 在C++中通过引用将枚举作为默认参数传递时出错
- 不能将类实例化为 LHS 值,并将限定枚举作为参数 (C++ VS2015)
- 是否可以使用 static_cast 从可变参数枚举创建 boost::mpl::list_c
- 枚举作为基类的模板参数总是会因未解决的错误而失败
- 在模板参数内向前声明枚举类
- C++运行时从编译时已知集/枚举中选择模板非类型参数
- 有没有一种方法可以在基于枚举的可变参数模板函数之间进行选择,这比将函数包装在结构中更简单