Übergabe per const Reference
-
Schönen guten Tag

Hab in meinem Programm folgenden Fehler und kenne den Grund nicht.Der Eintrag in der h. File:
void CWaypoint::print() const; // Für Übergabe per const-ReferenceIn der .cpp :
void CWaypoint::print() const { cout << "Wegepunkt: " << m_name << " "; //cout << "Wegepunkt @ " << this << ": " << m_name << endl; cout << "<" << m_latitude << "," << m_longitude << ">" ; cout << endl; }Fehler:
Description Resource Path Location Type extra qualification 'CWaypoint::' on member 'print' [-fpermissive] CWaypoint.h /Übung Dynamischer Speicher/myCode line 26 C/C++ ProblemVielen Dank im Voraus
-
Die Fehlermeldung sagts dir eigentlich schon.
Du deklarierst die Methode innerhalb der Klasse mit 'CWaypoint::'.
Und das soll halt nicht so.
-
Zusätzlich zu igiguoihs Antwort: Wass willst du in
void CWaypoint::print() const; // Für Übergabe per const-Referencemit dem Kommentar sagen? CWaypoint::print() nimmt doch überhaupt keine Parameter, wieso also "Übergabe per const-Reference"?!
-
wob schrieb:
Zusätzlich zu igiguoihs Antwort: Wass willst du in
void CWaypoint::print() const; // Für Übergabe per const-Referencemit dem Kommentar sagen? CWaypoint::print() nimmt doch überhaupt keine Parameter, wieso also "Übergabe per const-Reference"?!
Wenn du sowas hast:
void foo(const CWaypoint& bar) { bar.print(); }Musst du print() als const deklarieren, da du die Methode sonst nicht aufrufen darfst (sie könnte CWaypoint ändern, was aber aufgrund des const-Qualifizierers der Referenz nicht möglich sein darf).
-
Ich habe nicht das
constselbst kritisiert (wofür das steht, hast du ja erklärt), sondern ich habe den Kommentar einfach nicht verstanden. print hat 0 Parameter, es wird also gar nichts übergeben. Auch nichts per const-Referenz! Ist doch gar nicht möglich bei 0 Parametern.Wobei: nachdem ich dein Beispiel unten nochmals gelesen habe, glaube ich, dass ich den Kommentar langsam verstehe. Er bezieht sich also nicht auf die Funktion selbst, sondern darauf, wo sie anderswo eingesetzt werden könnte? Nur: Warum heißt der dann nicht "Für Übergabe per const-Pointer"? Da würde ja das genauso gelten! Ganz allgemein hätte ich einen Kommentar "für const-Correctness" verstanden (wenn er das bedeuten soll), aber so etwas würde man doch nie extra kommentieren!