Frage zu const......
-
Ich hab nen zeiger (const) auf ein Objekt:
const CConfiguration::SKollision *pCollArea= &(pKonfig->paKollision.ElementAt(iKol));und will nun ne Funktion über den Zeiger aufrufen:
pCollArea->getNearestSavePos()aber dann kommt folgender Compiler fehler:
error C2662: 'CConfiguration::SKollision::getNearestSavePos': this-Zeiger kann nicht von 'const CConfiguration::SKollision' in 'CConfiguration::SKollision &' konvertiert werden Durch die Konvertierung gehen Qualifizierer verloren ....
-
Dann ist getNearestSavePos wohl keine const-Methode.
-
BorisDieKlinge schrieb:
Ich hab nen zeiger (const) auf ein Objekt
Du hast einen Zeiger auf ein konstantes Objekt (kein konstanter Zeiger). Da das Objekt konstant ist musst du alle Methoden, welche du gern verwenden willst, auch als konstant definieren.
grüße
-
Kurzgesagt:
Du mußst hinter die Methoden-Signatur noch ein const schreiben
int getNearestSavePos() const
-
verständlich;)
-
Kurzgesagt schrieb:
Kurzgesagt:
Du mußst hinter die Methoden-Signatur noch ein const schreiben
int getNearestSavePos() constOder auf das const in der Variablendefinition verzichten....
BorisDieKlinge schrieb:
...
CConfiguration::SKollision *pCollArea= &(pKonfig->paKollision.ElementAt(iKol));....
Gruß,
Simon2.
-
Wenn getNearestSavePos() nichts am Objekt selbst ändert sollte die Funktion durchaus als konstant deklariert werden. Alles andere wäre Unsinn, denn spätestens bei konstanten Referenzen (als Parameter z.B.) gibts Probleme.
grüße
-
David_pb schrieb:
Wenn getNearestSavePos() nichts am Objekt selbst ändert sollte die Funktion durchaus als konstant deklariert werden. Alles andere wäre Unsinn, denn spätestens bei konstanten Referenzen (als Parameter z.B.) gibts Probleme.
grüße
Klar !
Es gibt aber auch das Szenario, dass man eine Funktion vorgegeben bekommt und nicht ändern kann ... (nicht zu vergessen den Fall, dass die Funktion tatsächlich nicht const ist).
Auf jeden Fall sollte man wissen, was man constet (möglichst Alles
) und was nicht (das, was wirklich ändern soll) !Es wäre ganz interessant, wenn in C++ const der default wäre ...

Gruß,
Simon2.
-
@BorisDieKlinge: Was bist du eigentlich gerade am programmieren ???
Deine Name taucht immer öfters hier auf