redefinition... wo denn?!?



  • Hallo,

    ich hab ein kleines Projekt, das aus 7 Cpp-dateien besteht und alle Datentypen werden in der datastructures.cpp definiert. Diese wird dann von jeder einzelnen Datei included... Jetzt meckert mir der Compiler immer bei der main.cpp , dass ich eine redefinition habe (alle anderen Dateien werden brav compiliert...). Woran mag da liegen?!?

    ich habe mal die Struct beigefügt, bei der gemeckert wird...

    struct AlignSpeicher {
    	   int score;
    	   string s1;
    	   string s2;
    	   string s1name;
    	   string s2name;
    
    	   AlignSpeicher(string s1nam, string s2nam, int sc, string s1a, string s2a){
    	   						score= sc;
    	   						s1name=s1nam;
    	   						s2name=s2nam;
    	   						s1=s1a;
    	   						s2=s2a;
    							}
    
    	   bool lt(const AlignSpeicher& k) const {
           		 return score < k.score;}
    
    //zum Sortieren muss ich sie mit "<" vergleichen können
    	  bool operator < (AlignSpeicher const & other) const {
          	   return score < other.score; } 
    
    	   };
    


  • mit deinem struct hat es wohl eher weniger was zu tun.

    schreib den include doch mal in die stdafx.h

    #include "datastructures.cpp"
    


  • Ich nehme mal an, der Compiler sagt auch dazu, was (und wo) redefiniert wurde 😉



  • Deklaration in ner .cpp und includen einer .cpp in eine .cpp? Womöglich auch noch paralleles Kompilieren (neben dem Includen) dieser .cpp?

    Rethink your design! 😉



  • Hast du die Header mit #ifdef geschützt?
    Falls nicht, bekommst du das Problem beim zweiten include der Datei.


Anmelden zum Antworten