为什么不定义静态枚举会导致链接时间错误?

时间:2013-12-20 08:38:30

标签: c++ c++11 enums

我使用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编译器。

1 个答案:

答案 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
};