Когда я пытаюсь инициализировать статический член в моем файле Action.cpp
через
ILogger & Action::m_activeLogger = DefaultLogger();
компилятор (C ++ 11 + Linux) говорит:
не может привязать неконстантную ссылку lvalue типа "ILogger &" к r-значению типа 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
с моим производным классом?