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