Правильный способ объявить перечисление в Managed C ++ 2005? - PullRequest
1 голос
/ 09 января 2009

Если я использую / clr: oldSyntax, должно работать следующее:

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

что эквивалентно non-oldSyntax? Как объявить «управляемое» перечисление в Managed C ++ для .NET 2.0?

Edit: когда я следую совету JaredPar , тогда, если я пытаюсь передать IceCreamFlavor функции с подписью:

OrderFlavor(IceCreamFlavors flav)

, запустив

OrderFlavor(IceCreamFlavors::Sardine)

Я получаю сообщение об ошибке:

'IceCreamFlavors Sardine' : member function redeclaration not allowed

Ответы [ 2 ]

2 голосов
/ 09 января 2009

Попробуйте

enum class IceCreamFlavors {
  Vanilla,
  Chocolate,
  Sardine,
};
0 голосов
/ 30 ноября 2010

Вы случайно не пытаетесь объявить свое перечисление в другом классе? то есть:

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

Если да, я думаю, вам нужно переместить его так, чтобы это был собственный класс, а не вложенный. (Разрешает ли управляемый c ++ вложенные классы?) У меня сложилось впечатление, что раньше вы могли делать это неуправляемым стилем внутри другого класса, но, поскольку теперь это собственный класс, вам, вероятно, не следует их вкладывать. Я могу быть не прав. Мои знания в области управляемых c ++ и c # довольно слабые.

...