2009-01-08 65 views
1

如果我使用/ CLR:oldSyntax下列代碼應該起作用:在Managed C++ 2005中聲明枚舉的正確方法?

public __value enum IceCreamFlavors 
{ 
    Vanilla, 
    Chocolate, 
    Sardine, 
}; 

什麼是在非oldSyntax等價?如何在Managed C++ for .NET 2.0中聲明一個「託管」枚舉?

編輯: 當我按照JaredPar的advice,然後如果我嘗試的IceCreamFlavor與簽名傳遞給函數:通過運行

OrderFlavor(IceCreamFlavors::Sardine) 

OrderFlavor(IceCreamFlavors flav) 

我得到的錯誤:

'IceCreamFlavors Sardine' : member function redeclaration not allowed 
+0

您能否發佈更完整的OrderFlavor示例? – JaredPar 2009-01-08 23:50:48

回答

2

試試

enum class IceCreamFlavors { 
    Vanilla, 
    Chocolate, 
    Sardine, 
}; 
+0

當我這樣做時,如果我嘗試通過運行「OrderFlavor(IceCreamFlavors :: Sardine)」將簽名IceFreamFlavor傳遞給一個帶有簽名的函數:「OrderFlavor(IceCreamFlavors flav)」,我得到''IceCreamFlavors Sardine':member function redeclaration not允許」 – brian 2009-01-08 23:01:52

0

你有沒有試圖在另一個類中聲明你的枚舉? 即:

public ref class Icecream 
{ 
    public enum class flavours 
    { 
      Mint, 
      Vanilla, 
      Guac 
    }; 
}; 

如果你是,我猜想,你需要把它搬走,以便它是它自己的類,而不是一個嵌套的一個。 (託管C++是否允許嵌套類?)我的印象是,你曾經能夠在另一個類中做到非託管的風格,但是現在它自己的類,你可能不應該嵌套它們。我可能錯了。我對託管C++和c#的知識有點弱。