【发布时间】:2019-04-21 04:04:52
【问题描述】:
当我尝试在我的Action.cpp 文件中初始化一个静态成员时
ILogger & Action::m_activeLogger = DefaultLogger();
编译器(C++11 + Linux)说:
无法将“ILogger &”类型的非常量左值引用绑定到 ILogger 类型的右值
如何初始化指向实例的静态成员变量?
小例子:
我有一个接口基类(纯虚拟)
base.h:
class ILogger {
public:
virtual ~ILogger();
virtual void write(std::string msg);
}
以 DefaultLogger.h 作为派生类作为实现(此处未显示 CPP 文件):
class DefaultLogger : public ILogger {
public:
~DefaultLogger();
void write(std::string msg);
}
在Action.h中,我使用了一个引用基类的静态成员变量:
class Action {
static ILogger & m_activeLogger;
// getter/setter to register another logger...
}
如何使用派生类初始化静态成员变量m_activeLogger?
【问题讨论】:
-
这可能是你想要的? stackoverflow.com/a/1008289/3807729
标签: c++ static initializer static-constructor