Problem mit Buchbeispiel



  • Guten Tag zusammen,

    und zwar hänge ich bei meinem Buch "Der C++ Programmierer" (zu C++14) bei dem Thema Klassen. Wer nachschlagen möchte, Seite 156 (Kapitel 3, Objektorientierung 1 //Listing 3.1/3.2)

    Ich habe mir den Sachverhalt und das vorgegebene Beispiel durchgelesen. Danach habe ich mit Hilfe des Beispiels das ganze "nachgebaut". Als ich es testen wollte meckerte mich jedoch der Compieler an.

    undefined reference to `Ort1::aendern(int, int)'
    undefined reference to `Ort1::getY() const'
    undefined reference to `Ort1::getX() const'
    

    Als ich beim kontrollieren, keinen Fehler gefunden habe, habe ich das Beispiel des Autors kopiert und getestet, mit den gleichen Fehlern. Ich würde ja jetzt selbst genau suchen wo das Problem liegt, allerdings ist das das Einführungsbeispiel für Klassen und somit habe ich leider noch keine Ahnung davon^^. Ich denke, dass ich hier nur gerade einen Blackout habe und das Problem ganz simpel ist.

    Meine Frage ist nun natürlich wo der Fehler liegt? Aufgrund der Kürze hänge ich die vollständigen Schnipsel mal an.

    main.cpp

    #include <iostream>
    #include "Ort1.h"
    
    int main() {
    
        Ort1 ort1;
        ort1.aendern(5,8);
        std::cout << ort1.getX() << " " << ort1.getY() << std::endl;
    
    }
    

    Ort1.h

    #ifndef ORT1_H_INCLUDED
    #define ORT1_H_INCLUDED
    
    class Ort1 {
    
    public:
    
        int getX() const;
        int getY() const;
        void aendern(int x, int y);
    
    private:
    
        int xKoordinate;
        int yKoordinate;
    
    };
    
    #endif // ORT1_H_INCLUDED
    


  • Gibt es denn auch noch eine Ort1.cpp-Datei?



  • Du hast wohl noch keine Ort1.cpp Datei in deinem Projekt, in der die Funktionsdefinitionen stehen.

    Ort1.cpp

    int Ort1::getX()
    {
       return xKoordinate;
    }
    
    int Ort1::getY()
    {
       return yKoordinate;
    }
    
    void aendern(int x, int y)
    {
        xKoordinate = x;
        yKoordinate = y;
    }
    


  • sry, habs gerade selbst gefunden. War wieder zu voreilig. 100 mal umgeschrieben und das einfachste übersehen. Ganz großes Sry^^. Ja es gibt eine .cpp Datei. Hätte letzte Nacht besser schlafen, statt programmieren sollen^^. Thema kann gern gelöscht werden^^



  • Es meckert nicht der Compiler, sondern der Linker. Du wirst doch auch noch eine Ort.cpp haben? Diese musst du mitkompilieren bzw. die entsprechende Objektdatei linken.

    Habe ich gerade gestern geschrieben: https://www.c-plusplus.net/forum/345280#2544935



  • ja wob ist auch so. Und yeeehaa hatts auch fast genauso geschrieben wie der Autor. Ich danke euch trotzdem für eure Mühe. *peinlich peinlich*


Log in to reply