2013-06-24 40 views
0

我需要傳達一個枚舉並將相同的枚舉傳遞給多個調用。所以我這樣做:如何使用C++枚舉而不會收到編譯器警告

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

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

兩種傳輸方法的聲明如下:

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

不過,我得到以下警告該變量的盟友命名聲明:

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

我做錯了什麼?我如何重寫我的代碼,以便它不會生成編譯器警告?

+0

是,哎呀,這是C++ –

+1

「如何做XYZ沒有得到一個編譯器警告」 - 這樣的標題總是深發展在我內心的衝動通過書面回答」你的代碼正確「...... – 2013-06-24 21:33:22

+0

什麼版本的MSVC? – Yakk

回答

5

MSDN page on the warning;

當您在類型中引用枚舉時,不需要指定枚舉的名稱。

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

所以在你的情況下;

MiddleEarth::Creatures::Elf 

應該

MiddleEarth::Elf 
+0

工作過,謝謝! –

2

你可能想:

MiddleEarth::Creatures ally = MiddleEarth::Elf; 
+0

工作過,謝謝! –