Modo corretto per dichiarare un enum in Managed C ++ 2005?
-
06-07-2019 - |
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
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.