如何在不收到编译器警告的情况下使用C ++枚举

时间:2013-06-24 21:25:11

标签: c++ visual-c++ enums

我需要传达一个和同一个枚举传递给多个调用。所以我这样做:

MiddleEarth::Creatures ally = MiddleEarth::Creatures::Elf;

myEnergy->Transfer(ally, 10);
myLives->Transfer(ally, 1);

两种传递方法都声明如下:

Energy::Transfer(const Creatures& transferTo, (snip)

但是,我在声明名为ally的变量声明时收到以下警告:

 warning C4482: nonstandard extension used: enum 'MiddleEarth::Creatures' used in qualified name

我做错了什么?如何重写代码以使其不生成编译器警告?

2 个答案:

答案 0 :(得分:5)

来自MSDN page on the warning;

  

当您在类型中引用枚举时,您不需要指定枚举的名称。

     

int i = S :: E :: a; // C4482
  int j = S :: a; //好的

所以在你的情况下;

MiddleEarth::Creatures::Elf

应该是

MiddleEarth::Elf

答案 1 :(得分:2)

你可能想要:

MiddleEarth::Creatures ally = MiddleEarth::Elf;