【问题标题】:How to initialize a static member如何初始化静态成员
【发布时间】:2009-09-29 14:51:05
【问题描述】:

我想初始化两个静态数据成员。查看这两个文件

// Logger.h   

class Logger
{
    public:
        static LoggerConcrete error;
        static LoggerConcrete write;
};

//Logger.cpp

Logger::error = LoggerConcrete(LOG_DEBUG);
Logger::write = LoggerConcrete(LOG_DEBUG);

Logger.cpp 中两个静态成员的初始化不起作用。 我收到以下编译器 (g++) 错误:

g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Logger.d" -MT"Logger.d" -o"Logger.o" "../Logger.cpp" ../Logger.cpp:13: 错误:预期的 构造函数、析构函数或类型 '=' 标记之前的转换 ../Logger.cpp:14:错误:预期 构造函数、析构函数或类型 '=' 标记之前的转换

我想在每个包含 Logger.h 的类中使用 Logger::write 和 Logger::error。如何初始化这两个成员?

【问题讨论】:

    标签: c++ static initialization


    【解决方案1】:

    你需要指定类型:

    LoggerConcrete Logger::error = LoggerConcrete(LOG_DEBUG);
    LoggerConcrete Logger::write = LoggerConcrete(LOG_DEBUG);
    

    【讨论】:

      【解决方案2】:

      你也可以使用这个语法,简洁一点:

      LoggerConcrete Logger::error(LOG_DEBUG);
      LoggerConcrete Logger::write(LOG_DEBUG);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2011-07-18
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2018-08-03
        相关资源
        最近更新 更多