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.