Vector in Header



  • Hi leute
    ich hab mal nen problem.....zwar ist weiter unten schon nen ählicher post aber der konnte mir nicht wirklich helfen ><
    Also ich hab nen header in dem ich nen paar konstanten und so definiere (so glob_var mäßig...jaja ich weiß nicht das schönste aber erfüllt seinen zweck und wüsste nicht wie ichs anders machen soll) aber is ja auch egal. aufjeden fall wollte ich da jetzt nen std::vector<> deklarieren und definieren. sieht mehr oder weniger so aus:

    #include <vector>
    
    #ifndef _MYHEADER_H_
    #define _MYHEADER_H_ 
    
    std::vector <char> Vector; 
    
    #endif
    

    ist nur noch nix drin aber soll erstmal egal sein. auf jeden fall zeig mir der compiler nen linker error o0 hab keine idee warum...schätze ich hab irgendwas blödes falsch gemacht.......

    hoffe ihr könnt mir helfen



  • dann poste mal den fehler den der compiler ausgibt



  • error LNK2005: "class std::vector<char,class std::allocator<char> > Vector" (?Vector@@3V?vector@DV?vector@DV?allocator@D@std@@@std@@A) ist bereits in MyClass.obj definiert.

    Srry vergessen oben mit zu posten



  • // im h-file
    extern std::vector<char> Vector;
    
    // im cpp-file
    std::vector<char> Vector;
    

    MfG SideWinder



  • Wow cool funzt danke^^
    nur nicht ganz verstanden warum ich da nen extern vor machen muss....bei std daten typen klappts doch so!?



  • Yahiko schrieb:

    Wow cool funzt danke^^
    nur nicht ganz verstanden warum ich da nen extern vor machen muss....bei std daten typen klappts doch so!?

    Nein, eigentlich auch nicht.



  • Header werden ja im Grunde beim Einbinden nur in die jeweilige Datei kopiert.

    Wenn du deinen Header mit der definition in mehrere Dateien einbindest steht nachher aus sicht des Compilers in mehreren Dateien die definition der Variable. Genau das hat er auch bemängelt.

    Durch das extern sagst du nur, dass es diese Variable irgendwo gibt, so dass jeder darüber bescheid weiß, ohne sie jedoch zu definieren. Das machst du dann in einer der .cpp-Dateien.




Anmelden zum Antworten