我需要传达一个和同一个枚举传递给多个调用。所以我这样做:
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
我做错了什么?如何重写代码以使其不生成编译器警告?
答案 0 :(得分:5)
当您在类型中引用枚举时,您不需要指定枚举的名称。
int i = S :: E :: a; // C4482
int j = S :: a; //好的
所以在你的情况下;
MiddleEarth::Creatures::Elf
应该是
MiddleEarth::Elf
答案 1 :(得分:2)
你可能想要:
MiddleEarth::Creatures ally = MiddleEarth::Elf;