在Managed C ++ 2005中声明枚举的正确方法?

时间:2009-01-08 22:46:15

标签: enums managed-c++

如果我使用/ clr:oldSyntax,则以下内容应该有效:

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

非oldSyntax中的等价物是什么?如何在Managed C ++ for .NET 2.0中声明“托管”枚举?

修改 当我关注JaredPar的advice时,如果我尝试将IceCreamFlavor传递给具有签名的函数:

OrderFlavor(IceCreamFlavors flav)

运行

OrderFlavor(IceCreamFlavors::Sardine)

我收到错误:

'IceCreamFlavors Sardine' : member function redeclaration not allowed

2 个答案:

答案 0 :(得分:2)

尝试

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

答案 1 :(得分:0)

你有没有尝试在另一个班级里宣布你的枚举? 即:

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

如果你是,我猜你需要把它移出来,这样它就是它自己的类而不是嵌套的类。 (托管的c ++是否允许嵌套类?)我的印象是你曾经能够在另一个类中进行非托管样式,但由于它现在是自己的类,你可能不应该嵌套它们。我可能错了。我对托管c ++和c#的了解很少。