Frage zur Vereinbarung von Konstanten



  • Hallo liebe Community,
    ich habe folgenden Konstanten vereinbart

    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    const Vmax = 240, Rmax = 6, CGM = 587.8775383;
    TForm1 *Form1;
    
    //---------------------------------------------------------------------------
    

    Nun möchte ich nochmals als die Formel die Rechnung darstellen:
    CGM = Vmax * pow(Rmax, 0.5);
    Sieht vielleicht schwachsinnig aus, weil die Ergebnisse ja schon gegeben sind, aber die Formel wird für später noch gebraucht. Meine Frage ist, warum man es so in C++ nicht schreiben kann. Es kommt der Fehler "E2024 const-Objekt kann nicht modifiziert werden" kommt. Schreibe ich anstatt "=" "==" funktionert alles, aber ich möchte das Ergebnis doch CGM zuweisen? 😕

    Vielen Dank für die Hilfe
    lg, freakC++



  • Du kannst den Wert einer Konstante nicht so ändern (=).



  • aber eigentlich wird er ja nicht geändert. Er wird ja nur nochmal neu berechnet!?



  • Das ist egal.
    Eine Konstante darf nie als Lvalue (also auf der linken Seite) einer Zuweisung stehen.



  • Hallo

    const ist konstant. Eine Konstante kann nach der Initialisierung nicht mehr verändern werden, sonst wäre sie keine Konstante.

    Ja es gibt den const_cast, aber ich bezweifle stark das das eine saubere Lösung wäre, weder in technischer noch in konzeptioneller Ebene.

    bis bald
    akari



  • Alles klar!!
    Habs verstanden! Vielen Dank für die schnelle Hilfe!

    Vielen Dank
    lg, freakC++


Anmelden zum Antworten