Ü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-Reference
    

    In 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++ Problem
    

    Vielen 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-Reference
    

    mit 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-Reference
    

    mit 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 const selbst 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!


Anmelden zum Antworten