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.


Anmelden zum Antworten