2009-02-04 4 views
-1

i ont un ENUM déclaré commeExiste-t-il un moyen d'utiliser les Enums gérés C++/CLI en tant qu'indices de tableau?

enum class AccessLevel : int 
{ 
    ReadOnly = 0, 
    Excluded = 1, 
    ReadWrite = 2, 
}; 

et un tableau déclaré comme

static array<String^>^ _accessMap = gcnew array<String^> { "R", "X", "W" }; 

Je veux faire quelque chose comme ceci:

AccessLevel^ access = access::ReadOnly; 
String^ foo = _accessMap[access]; 
+0

Pourriez-vous s'il vous plaît signaler l'erreur que vous obtenez? Vous devrez peut-être fournir une distribution explicite. J'imagine que cela fonctionnerait en C# mais dans ma courte expérience avec C++/CLI, je l'ai trouvé "floconneux". Alors essayez "String^foo = _accessMap [(int) access];" – nlaq

+0

Je reçois une erreur indiquant qu'il n'y a pas de conversion implicite vers int pour AccessLevel. Si je dis _accessMap [safe_cast (accès)], j'obtiens "l'erreur C2682: impossible d'utiliser" safe_cast "pour convertir AccessLevel^en int" –

Répondre

2
public enum struct AccessLevel 
{ 
     ReadOnly = 0, 
     Excluded = 1, 
     ReadWrite = 2, 
}; 

AccessLevel access = access::ReadOnly; 

vous pourriez avoir besoin de jeter à un int

String^ foo = _accessMap[(int)access]; 
Questions connexes