enum to String^
-
Grüss euch,
wieder einmal verstehe ich etwas nicht und finde keine Lösung.
Problem:
enum class ColEnum {Rot, Gruen, Blau}; int main(array<System::String ^> ^args) { Console::WriteLine(ColEnum::Rot); // gibt "Rot" als String auf der Konsole aus MessageBox::Show(ColEnum::Rot); // gibt einen Compilerfehler "kann nicht konvertiert werden" String^ Text = ColEnum::Rot; // Fehler... String^ Text = gcnew String(ColEnum::Rot); // auch Fehler };
Da nun ja Console::WriteLine auch einen String erwartet bzw. ausgibt, verstehe ich die Fehler nicht und ein einfacher cast auf String funktioniert natürlich auch nicht. Gibt es hier eine einfache Lösung?
-
Schau doch einfach mal, was WriteLine als Parameter alles übernimmt, die Auswahl ist groß.
#include "stdafx.h" using namespace System; enum class ColEnum {Rot, Gruen, Blau}; int main(array<System::String ^> ^args) { Console::WriteLine(ColEnum::Rot); // gibt "Rot" als String auf der Konsole aus String^ Text = ColEnum::Rot.ToString(); // Fehler... String^ Text2 = gcnew String(ColEnum::Rot.ToString()); // auch Fehler };
public: static void WriteLine ( Object^ value )
Wenn value NULL (Nothing in Visual Basic) ist, wird nur das Zeichen für den Zeilenabschluss geschrieben. Andernfalls wird die ToString-Methode von value aufgerufen, die die Zeichenfolgenentsprechung erstellt, und die resultierende Zeichenfolge wird in den Standardausgabestream geschrieben.
Die Lösung wäre gewesen: F1 drücken
-
Vielen Dank
Aber ohne Deinen Stups hätte ich das auch mit F1 nicht gefunden, denn ich konnte mit ToString() nichts anfangen (hatte ->ToString() und ::ToString() versucht.
Selbst bei .ToString() hilft Intellisense nicht weiter (ich weiss, man soll sich darauf nicht verlassen). Das habe ich auch nicht, aber auf .ToString() wäre ich nicht gekommen.
-
Hm... Wann Du . und wann -> verwenden sollst weisst Du generell ?
-
Weiss ich und bin mit den Grundlagen durchaus vertraut (und viel mehr auch nicht). Viel zu lernen gibt es natürlich noch.