const correctness



  • Hallo!

    Ich habe ein Problem mit const. Folgender Code:

    int PositionSet::addPosition(const Position& position) {
        ...
        mPositions.insert ( position );
    
        const Journal& journal = position.getDepot().getJournal(); // Liefern alle konstante Referenzen
        Journal& mutableJournal = const_cast<Journal&>( journal );
        mutableJournal.notifyNumPositionsChanged(  position.getDepot().getName() );
    }
    

    Diese Methode fügt eine Position in einen Member mPositions ein. Jetzt muss die GUI (QT View) über diese Änderung benachrichtigt werden. Das Model, das dafür zuständig ist wird von Journal gehalten.
    Sämtliche getter() liefern konstante Referenzen. Das ist so weit ja auch richtig: Ich will weder position ändern, noch das Depot. Das Problem ist nur das Journal: Hier muss ich notifyNumPositionsChanged() aufrufen, dass intern das Model des Journals ändert. notifyNumPositionsChanged() kann also NICHT const sein.
    Drum caste ich im Moment die constness einfach weg, was natürlich unschön ist.
    Könnte man das irgendwie anders lösen?



  • Mach notifyNumPositionsChanged eine const Memberfunktion und deklariere die Variablen, die verändert werden als mutable. Schön ist das zwar immer noch nicht, aber um Längen besser als const_cast.


Anmelden zum Antworten