DEV C++ - schon wieder



  • Wieder mal eine weiter frage zu devc++:
    ich hab in ner .cpp datei ne klassemit ner funktion. soweit schön und gut, aber wenn ich compile hab zwar keine compilerfehler, aber der linker gibt das hier aus:

    blabla-das ganze ordnerzeug/sprite.o(.text+0x0):sprite.cpp: multiple definition of `sprite::surfaces_malen(void)'
    blabla-das ganze ordnerzeug/main.o(.text+0x0):main.cpp: first defined here



  • Lösch die Definition von sprite::surfaces_malen(void) aus sprite.cpp oder main.cpp



  • Klar würd ich das machen, wenn ich die funktion in main.cpp überhaupt definiert hätte!!! Hab ich vergessen zu schreiben...



  • ok, die fehler sind jetzt weg, seit ich die funktionen gleich in der Klasse definier. Kann mir bitte ,al jemand sagen warum das so ist???



  • extrem seltsam:
    egal was, ob variable oder funktion: solange es nicht in einer Klasse steckt aber in einer anderen Datei als meiner main.cpp kommt dieser fehler! Ich hab aber in allen Dateien (ausser der Main)

    #ifndef
    #define blabla-dateiname

    CODE

    #endif

    was ist los, was soll ich machen??



  • Das sieht so aus als hättest du die Implementation von sprite::surfaces_malen(void) in einer .h Datei stehen.

    Wenn du die Funktion in der Klasse definierst, kann der Compiler eine inline Funktion erzeugen.



  • nope, steht alles in .cpp dateien.



  • das heisst ja auch

    #ifndef dateiname
    #define dateiname
    
    ..
    
    #endif
    

    und das macht man auch nur in den Headern



  • ja, ich habs im code auch so!
    Muss ich denn header benutzen?? Das geht doch auch alles ohne, oder? ich hab meine main.cpp und eben alle möglichen anderen .cpp dateien. in allen anderen steht oben

    #ifndef dateiname
    #define dateiname
    //Bspw:
    #include "andere_datei.cpp"

    //code
    //wenn jetzt hier zb. NUR EINE EINZIGE BESCH*** VARIABLE kommt kommt der fehler
    //(wenn ich nur drauf zugreifen will)

    #endif

    in Main.cpp werden die ganzen dateien dann logischerweise mit #include "datei.cpp" eingefügt.

    Ich bekomme diesen fehler immer, wenn ich in ner anderen datei als main.cpp ne variable benutz!!(ausser in ner klasse!!!)
    Dabei passiert mit der variable/funktion überhaupt GAR NICHTS in der Main.cpp!!


Anmelden zum Antworten