const und Vererbung



  • Don999 schrieb:

    Das nachfolgende const bedeutet ja, dass this nicht verändert werden darf, aber
    wieso geht dann ((Test2*) this)->bVar=false; das 😕

    Weil Du hier this das const weg-castest (Test2* ist nicht const, steht ja auch nicht dabei 😉 )



  • Btw - der Methodenname "setVariable()" deutet eigentlich darauf hin, daß diese Methode irgendwas in der Klasse setzen will - da hast du entweder einen unpassenden Namen gewählt (für eine Ausgabe-Methode ist "getVariable()" passender) oder das const ist überflüssig.



  • Danke für die Antworten.
    In C++ kann man ja machen was man will 🕶
    Ich komme von Delphi und da wird man an die Hand genommen.
    Beim Methodennamen hab ich nicht sonderlich viel nachgedacht...

    so long
    Don



  • Don999 schrieb:

    Danke für die Antworten.
    In C++ kann man ja machen was man will 🕶

    Klar kannst du machen, was du willst - aber wenn du irgendwann ein "echt" konstantes Objekt vorgesetzt bekommst, wird dir das Programm mit einem SegFault um die Ohren fliegen.



  • Hi,

    nachdem das eigentliche Problem ja gelöst scheint, noch eine Anregung von mir: Da das Ganze 0% mit Vererbung zu tun hat, sollte man das evtl. auch aus der Titelzeile entfernen ("Viagra" steht da ja auch nicht drin 😉 ).

    EDIT: Oh - als "Unregistrierter" kann man das wahrscheinlich gar nicht.
    Noch ein Grund, Unregs das Erstellen neuer Threads zu verbieten. 😉

    Gruß,

    Simon2.



  • pumuckl schrieb:

    eigentlich ist this innerhalb der Funktion vom Typ const Test2*.

    Nur ne Detailfrage: ist this innerhalb der Methode nicht vom Typ const Test* const?



  • this->that schrieb:

    pumuckl schrieb:

    eigentlich ist this innerhalb der Funktion vom Typ const Test2*.

    Nur ne Detailfrage: ist this innerhalb der Methode nicht vom Typ const Test* const?

    Da this kein lvalue ist, sprich nicht auf der linken Seite einer Zuweisung stehen kann, verhält es sich in der Tat immer wie T* const (übrigens unabhäöngig davon, ob T selbst const ist).



  • Don999 schrieb:

    Ich komme von Delphi und da wird man an die Hand genommen.

    In C++ wird man auch "an die Hand genommen". Man wird nur nicht kastriert 🙂



  • LordJaxom schrieb:

    this->that schrieb:

    pumuckl schrieb:

    eigentlich ist this innerhalb der Funktion vom Typ const Test2*.

    Nur ne Detailfrage: ist this innerhalb der Methode nicht vom Typ const Test* const?

    Da this kein rvalue ist, sprich nicht auf der rechten Seite einer Zuweisung stehen kann, verhält es sich in der Tat immer wie T* const (übrigens unabhäöngig davon, ob T selbst const ist).

    Meinst du nicht eher lvalue und linke Seite?



  • this->that schrieb:

    Meinst du nicht eher lvalue und linke Seite?

    Äh, ja.


Anmelden zum Antworten