globale instanzen / include - Problem



  • Hallo,
    hoffentlich kann mir jemand von euch hier helfen.
    Mein (Anfänger-) Problem ist, dass ich gerne globale Instanzen (log_log und log_debug) einer Klasse (Log) hätte. Wenn ich u.a. Code verwende bekomme ich die Fehlermeldung "multiple definition" für log_log und log_debug, jedoch an sinnlosen stellen in "log.cpp" und "tis.cpp". Sind die "#ifndef" nicht dazu da, das zu verhindern?

    Danke für jede Antwort.

    Viele Grüße

    "log.hpp"

    #ifndef LOG_HPP_
    #define LOG_HPP_
    //...
    class Log{
    	public:
    		Log();
    		~Log();
    		void open(std::string logname);
    		void close();
    		void put(std::string message);
    		void clean();
    	private:
    		std::string filename;
    };
    Log log_log;
    Log log_debug;
    //...
    #endif /*LOG_HPP_*/
    

    "tis.hpp"

    #ifndef TIS_HPP_
    #define TIS_HPP_
    ...
    #include "log.hpp"
    ...
    #endif /*TISIM_HPP_*/
    


  • johsem schrieb:

    Sind die "#ifndef" nicht dazu da, das zu verhindern?

    Nein, die schützen dich nur davor, dass eine Headerdatei mehrfach in einer .cpp-Datei eingebunden wird.

    In der Headerdatei darf nur eine extern-Deklaration der Variablen stehen. Die Definition muss in genau eine .cpp-Datei.


Anmelden zum Antworten