2009-09-09 7 views
1

En C# vous pouvez déclarer une énumération et une fois que vous avez défini sa valeur ToString sur la variable et obtenir une représentation sous forme de chaîne de la valeur de l'énumération.Equivalent de ToString() sur un type enum en C++/CLI

Comment faites-vous cela en C++/CLI en utilisant une énumération gérée?

Répondre

2

N'est-ce pas la même syntaxe?

MyEnum enumValue = MyEnum::Enum1; 
Console::WriteLine(enumValue.ToString()); 

Regardez cette page du livre "Pro Visual C++/CLI et .NET 3.5 Platform" dans Google Books

« La méthode ToString() pour les impressions ENUM le nom de ENUM en tant que chaîne de caractères "

+0

Je reçois "à gauche de .ToString() doit avoir class/struct/union" – CJBrew

0

ToString() doit renvoyer le nom de la valeur enum. De plus, si vous décorez l'Enum géré avec un attribut [Flags], par exemple Colour::Red | Colour::Blue ToString() sera "Rouge, Bleu". (Ceci est à partir de la mémoire du livre de Marcus Heege "Expert Visual C++/CLI: .NET pour Visual C++ Programmers", pas essayé moi-même)

4

Alors que les autres réponses ne sont pas incorrectes, je me suis retrouvé avec le même problème. Dans mon cas, j'avais déclaré une énumération C++ standard et j'avais oublié d'utiliser la syntaxe CLI (même si j'avais été exposé dans des propriétés publiques sans les avertissements du compilateur!).

La syntaxe correcte pour un C++/CLI ENUM est (Notez le mot 'classe'):

public enum class SomeEnum { 
    Value1, 
    Value2 
} 

NB: Vous pouvez également utiliser 'struct' plutôt que 'classe'.

Vous aurez aussi besoin de revenir dans votre code et modifier les affectations (le compilateur sera heureux de vous les erreurs cependant) de celle-ci:

SomeEnum value = Value1; 

à ceci:

SomeEnum value = SomeEnum::Value1; 

Vous va maintenant trouver que 'ToString()' fonctionne comme vous l'attendez.

Questions connexes