init funktion verständnis problem



  • doc = TiXmlDocument("exmlfile");
    

    Tipp:Google: c++ initialisierungsliste



  • hmm jetzt meckert :

    multiple definition of `XmlConfig::initialize()'

    wenn ich initialize() ohne angabe der Klasse einsetze kennt er doc wieder nicht mehr.



  • hast du den #include wächter?

    #ifndef xml_h_
    #define xml_h_ xml_h_
    
    // dein class
    
    #endif
    


  • hmm ich habe die definition via header file weggelassen da es eine ziemlich kleine Klasse wird. Allerdings include ich in einem anderen file die XmlConfig.cpp. Wo muss ich den include wächter benutzen?



  • ich bin sicher das dies mein Problem ist nur ich habe keine Ahnung wie ich das in meinem Fall ( keine Header Datei ) umsetzen soll.

    #ifndef XMLCONFIG_cpp_
    #define XMLCONFIG_cpp_ XMLCONFIG_cpp_ 
    
    class class XmlConfig {
    
    ...
    };
    
    #endif
    

    habe ich versucht, keine Änderung.

    Muss ich mit einer header Datei arbeiten??



  • Evtl. einen Tipp!?

    Ich möchte die oben angegebene Klasse in einer anderen source benutzen.

    Ich habe aber keine header datei erstellt, sondern die cpp datei included.

    Das nimmt mir der linker über. Wo muss ich den include wächter installieren?

    Oder gehts garnicht und ich muss einen header erstellen ??

    HILFE



  • Wenn die Klasse sehr klein ist kann man sie auch ganz in den Header packen und da gehören auch die Include-Guards hin.
    cpp-Dateien inkludiert man nicht.



  • Braunstein schrieb:

    Wenn die Klasse sehr klein ist kann man sie auch ganz in den Header packen und da gehören auch die Include-Guards hin.
    cpp-Dateien inkludiert man nicht.

    Danke!

    Ich dachte auch daran aber da ich gehört habe das man in header files keine anderen header included sollte habe ich das nicht getan.

    Die Syntax die sich aus dem headerfile ergibt habe ich jetzt so benutzt:
    #ifndef XMLCONFIG_h_
    #define XMLCONFIG_h_ XMLCONFIG_h_

    Ist das korrekt?



  • dirkstr schrieb:

    Ich dachte auch daran aber da ich gehört habe das man in header files keine anderen header included sollte habe ich das nicht getan.

    Hast du auch Argumente gehört? Mir fällt nämlich keins ein.

    dirkstr schrieb:

    Ist das korrekt?

    Wenn sich am Ende deines Headers noch ein #endif findet: ja.

    cheers, Swordfish



  • Swordfish schrieb:

    dirkstr schrieb:

    Ich dachte auch daran aber da ich gehört habe das man in header files keine anderen header included sollte habe ich das nicht getan.

    Hast du auch Argumente gehört? Mir fällt nämlich keins ein.

    Ich nehme mal an, dass er wo gelesen hat, dass man, wenn man was includet das wenn möglich in der cpp macht. Aber gegen includen in Headern spricht eigentlich nix.



  • Ich kenne auch die Regel: jedes Header-File sollte so beschaffen sein dass ein .c(pp) File mit folgendem Inhalt fehlerfrei compiliert:

    #include "header.hpp"
    

    Oder anders: jedes Header File sollte selbst als Source-File compilierbar sein.

    Und das erfordert sehr oft sogar dass man andere Header-Files inkludiert, da man mit forward declarations einfach nicht immer auskommt.


Anmelden zum Antworten