operator -> non-const über -> const implementieren



  • Hallo,

    Wenn man eine Memberfunktion sowohl als non-const, als auch als const-Version hat, kann man ja die non-const Version über die const-Version implementieren. Wie funktioniert das bei operator ->?

    Grüße,
    PI



  • Nun, ich würde den const-Teil von this wegcasten und das Objekt, auf das über -> zugegriffen werden soll, zurückliefern.

    Also quasi so:

    class Whatever
    {
    private:
    int& value;
    
    public:
    int& operator->() {return value;}
    const int& operator->() const {return const_cast<Whatever*>(this)->operator->();}
    };
    

    oder so.

    Edit: Achso, Du wolltest das andersrum haben. Dann könnte man halt this zu const Whatever* casten und vom Ergebnis das const wiederum wegcasten oder so.



  • return const_cast<T*>(static_cast<const nullable*>(this)->operator ->());
    

    Funktioniert tatsächlich. Hatte ich wohl vorhin einen Syntaxfehler oder sowas drin. Seltsam.

    Danke 🙂


Anmelden zum Antworten