如果我使用/ 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
答案 0 :(得分:2)
尝试
enum class IceCreamFlavors {
Vanilla,
Chocolate,
Sardine,
};
答案 1 :(得分:0)
你有没有尝试在另一个班级里宣布你的枚举? 即:
public ref class Icecream
{
public enum class flavours
{
Mint,
Vanilla,
Guac
};
};
如果你是,我猜你需要把它移出来,这样它就是它自己的类而不是嵌套的类。 (托管的c ++是否允许嵌套类?)我的印象是你曾经能够在另一个类中进行非托管样式,但由于它现在是自己的类,你可能不应该嵌套它们。我可能错了。我对托管c ++和c#的了解很少。