如何初始化静态成员 [英] How to initialize a static member

查看:159
本文介绍了如何初始化静态成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to initialize two static data members. See the two files

// 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 ++)错误:

The initilization of the two static members in Logger.cpp doesn't work. I get the following compiler (g++) error:


g ++ -O0 -g3 -Wall -c
- fmessage-length = 0 -MMD -MP -MFLogger.d-MTLogger.d-oLogger.o../Logger.cpp../Logger.cpp:13:error:expected
构造函数,析构函数或类型
转换'='token
../Logger.cpp:14:error:expected
构造函数,析构函数或类型
转换前'='token

g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"Logger.d" -MT"Logger.d" -o"Logger.o" "../Logger.cpp" ../Logger.cpp:13: error: expected constructor, destructor, or type conversion before '=' token ../Logger.cpp:14: error: expected constructor, destructor, or type conversion before '=' token

我想在每个类中使用Logger :: write和Logger :: error, 。H。

I want to use Logger::write and Logger::error in each class in which I include Logger.h. How do I have to initialize these two members?

推荐答案

您需要指定类型:

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

这篇关于如何初始化静态成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆