我使用enum变量作为静态但未在类外定义。
enum log_level_e
{
error=1,
warning,
debug,
trace
};
class Logger
{
private:
static mutex logger_mutex;
Logger() {}
~Logger() {}
Logger (const Logger& source);
Logger& operator== (const Logger& source);
static log_level_e loglevel;
// functions and all
};
理想情况下,它应该给出链接时间错误,但它没有错误地工作正常。为什么会这样?我正在使用C ++ 11编译器。
答案 0 :(得分:4)
因为没有人使用它,并且链接器不会尝试查找它。 这会给你“所需”的错误
class Logger
{
public:
Logger() {
loglevel = warning;
}
~Logger() {}
private:
Logger (const Logger& source);
Logger& operator== (const Logger& source);
static log_level_e loglevel;
// functions and all
};