首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >范围内枚举的最佳替代方案-预C++11

范围内枚举的最佳替代方案-预C++11
EN

Stack Overflow用户
提问于 2013-10-09 23:00:18
回答 2查看 3.5K关注 0票数 6

我想在代码中的几个地方开始使用枚举,但是编译器以前的声明有问题。对我来说,目前如何宣布这些枚举是最有意义的:

避免这种情况的最好方法是什么?

代码语言:javascript
复制
enum score_methods_t {NONE,ABS_FROM_PERFECT,ERROR_SQUARED};
enum scale_methods_t {NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};

我应该让所有的东西都是唯一的,还是用命名空间来限定范围?我想在类中使用枚举类型,没有一个是最具描述性的名称!

同样,枚举冲突的原因也是因为它们本质上只是在引擎盖下定义的吗??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 23:02:18

在预C++11次中,我使用了:

代码语言:javascript
复制
struct score_methods { enum type { NONE, ABS_FROM_PERFECT, ERROR_SQUARED }; };

这意味着实际的enum类型总是有enum,值的score_methods::NONE等等。

另外,不,它们不仅仅是#define,因为您可以将它们放到不同的名称空间或类中(如上面所示),这是预处理程序无法处理的。

票数 12
EN

Stack Overflow用户

发布于 2013-10-09 23:01:57

您可以始终将枚举放在类中:

代码语言:javascript
复制
struct Score
{
     enum Method { None, AbsFromPerfect, ErrorSquared };
};

用法:

代码语言:javascript
复制
void foo(Score::Method m);

foo(Score::None);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19284255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档