我想在代码中的几个地方开始使用枚举,但是编译器以前的声明有问题。对我来说,目前如何宣布这些枚举是最有意义的:
避免这种情况的最好方法是什么?
enum score_methods_t {NONE,ABS_FROM_PERFECT,ERROR_SQUARED};
enum scale_methods_t {NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};我应该让所有的东西都是唯一的,还是用命名空间来限定范围?我想在类中使用枚举类型,没有一个是最具描述性的名称!
同样,枚举冲突的原因也是因为它们本质上只是在引擎盖下定义的吗??
发布于 2013-10-09 23:02:18
在预C++11次中,我使用了:
struct score_methods { enum type { NONE, ABS_FROM_PERFECT, ERROR_SQUARED }; };这意味着实际的enum类型总是有enum,值的score_methods::NONE等等。
另外,不,它们不仅仅是#define,因为您可以将它们放到不同的名称空间或类中(如上面所示),这是预处理程序无法处理的。
发布于 2013-10-09 23:01:57
您可以始终将枚举放在类中:
struct Score
{
enum Method { None, AbsFromPerfect, ErrorSquared };
};用法:
void foo(Score::Method m);
foo(Score::None);https://stackoverflow.com/questions/19284255
复制相似问题