Neulingsfrage



  • Hallo,
    ich habe ein kleines Programm geschrieben (nur so zu testz:

    main.c

    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    #include "cubenode.h"

    int main(int argc, char *argv[])
    {
    CubeNode cn;

    cn.printCrap();

    return 0;
    }

    cubenode.c

    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    class CubeNode
    {
    public:
    unsigned short used_subnodes;
    CubeNode* sub_nodes;

    CubeNode()
    {
    cout << "Initialisiere CubeNode\n";
    used_subnodes=5;
    }

    void printCrap()
    {
    cout << "Crap";
    }
    };

    cubenode.h

    class CubeNode
    {
    public:
    unsigned short used_subnodes;
    CubeNode* sub_nodes;

    CubeNode();
    void printCrap();
    };

    Beim Compilieren kommen folgende Fehler:
    [Linker error] undefined reference to CubeNode::CubeNode()' [Linker error] undefined reference toCubeNode::printCrap()'
    C:\cubic\Makefile.win [Build Error] [cubic.exe] Error 1

    Ich nehme an, es liegt an der Datei cubenode.h
    Wie kann ich diese Fehler beseitigen. Wäre um Hilfe sehr dankbar.



  • Hallo,

    versuch mal codetags zu benutzen. Die Datei "cubenode.c" muss auch die Datei "cubenode.h" inkludieren. Dann sollte die Endung nicht ".c" sein, sondern eher ".cpp". stdlib.h sollte durch cstdlib ersetzt werden.

    Vielleicht hilft dir das ja erstmal.



  • pack die 'main' in 'cubenode.c' (cpp wär besser) und lösch alle anderen files weg. vielleicht geht's dann



  • @net:
    Dein Weg funktioniert (wenn man außerdem die cubenode.h wegschmeißt bzw. nur nicht einbindet). Jedoch wüsste ich dennoch gern, was ich falsch gemacht habe in der Header-Datei.

    Zum Thema Datei-Endung: Klar, man kann auch .cpp verwenden. Wichtiger ist es jedoch den richtigen Compiler zu nutzen 😉 (Projektoptionen).



  • Hallo,

    guck mal hier:
    http://www.c-plusplus.net/forum/viewtopic.php?t=84697&highlight=definiert

    Du hast ebenfalls das Problem, dass du die Klasse "CubeNode" 2 x definierst. Die Aufteilung an sich ist ok, aber die Datei "cubenode.cpp" müsste so aussehen:

    #include <iostream>
    #include <cstdlib>
    #include "cubenode.h"
    
    using namespace std;
    
    CubeNode::CubeNode()
    {
    cout << "Initialisiere CubeNode\n";
    used_subnodes=5;
    }
    
    void CubeNode::printCrap()
    {
    cout << "Crap";
    }
    


  • @CarstenJ
    Danke. Damit kann ich das Problem als gelöst ansehen.


Anmelden zum Antworten