Domanda

Se uso / clr: oldSyntax dovrebbe funzionare quanto segue:

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

qual è l'equivalente in non-oldSyntax? Come posso dichiarare un "gestito"? enum in C ++ gestito per .NET 2.0?

Modifica quando seguo i consigli di JaredPar , quindi se provo a passare un IceCreamFlavor a una funzione con la firma:

OrderFlavor(IceCreamFlavors flav)

eseguendo

OrderFlavor(IceCreamFlavors::Sardine)

Ottengo l'errore:

'IceCreamFlavors Sardine' : member function redeclaration not allowed
È stato utile?

Soluzione

Prova

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

Altri suggerimenti

Stai, per caso, provando a dichiarare la tua enum in un'altra classe? vale a dire:

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

Se lo sei, immagino che devi spostarlo in modo che sia la sua classe anziché una nidificata. (Il c ++ gestito consente classi nidificate?) La mia impressione è che tu fossi in grado di fare lo stile non gestito all'interno di un'altra classe, ma dato che ora è la sua classe, probabilmente non dovresti annidarli. Potrei sbagliarmi. La mia conoscenza di c ++ e c # gestiti è piuttosto debole.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top