我有一些类,一个字段是一个静态指针 - 假设它是一个记录器,所以我希望它被初始化并且对于这个类的所有实例都是相同的。
class A
{
private:
static Logger* logger;
};
而且这个记录器将从dll初始化,所以它的初始化是一个函数,我不能只写new或make_unique之类的。我的问题是如何更好地组织这个以及在哪里初始化这个记录器?我应该Logger * initLogger()作为静态方法添加到类中并在构造函数中调用它
A::A() {
if (!logger)
logger = initLogger();
}
或者,也许我最好在 cpp 文件中创建这个记录器静态变量,但是我又遇到了何时调用它的初始化函数的问题。或者为单例的记录器编写新类?我认为这是非常标准的情况,所以应该有一些最好的方法?