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.