1

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

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

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

两种 Transfer 方法的声明如下:

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

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

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

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

4

2 回答 2

7

来自MSDN 页面上的警告

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

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

所以在你的情况下;

MiddleEarth::Creatures::Elf

应该

MiddleEarth::Elf
于 2013-06-24T21:28:42.640 回答
2

你可能想要:

MiddleEarth::Creatures ally = MiddleEarth::Elf;
于 2013-06-24T21:28:10.437 回答