Frage zum Aufzählungstyp ENUM



  • HALLO.

    ich würde gerne den Wert eines Types in einer enum Definition verändern können, also in etwa wie folgt:

    enum
    {
    	ValueA = -1,
    	ValueB =  0,
    	ValueC =  2
    
    }Data;
    
    int main(int argc, char* argv[])
    {
    	ValueA = 2;
    
    	return 0;
    }
    

    jetzt bekomme ich aber folgende fehlermeldung:

    error C2440: '=' : 'const int' kann nicht in 'enum ' konvertiert werden

    Habt Ihr bitte einen Hinweis, was ich da machen könnte?
    DANKE!
    V.K.



  • mist



  • enum-Elemente sind keine Variablen, sondern (symbolische) Konstanten. Die kannst du nicht zur Laufzeit ändern. Du könntest höchstens eine enum-Variable ändern (ala "Data = ValueC;").

    (in C wäre auch "Data=2;" erlaubt, in C++ geht sowas nur mit explizitem Cast)



  • VerbalKint schrieb:

    ...ich würde gerne den Wert eines Types in einer enum Definition verändern können, also in etwa wie folgt:...

    enums sind Konstanten, und können nicht geändert werden! Das wäre auch nicht sinnvoll. Die Werte in einem Enum entsprechen nicht Variablen sondern symbolischen namen für Werte.

    Nachtrag: Du kannst zwar eine Enum-Variable anlegen, die kann aber nur einen dieser Werte halten, den Wert hinter dem Namen lässt sich aber nicht ändern. (siehe Kommentar von CStoll)

    Wenn du Werte speichern und ändern willst musst du statt dessen mit struct/class arbeiten.

    cu André



  • Danke für die Hinweise!

    V.K.


Anmelden zum Antworten