微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更好地为类组织记录器 - 静态指针字段、全局变量、单例字段等?

如何解决如何更好地为类组织记录器 - 静态指针字段、全局变量、单例字段等?

我有一些类,一个字段是静态指针 - 假设它是一个记录器,所以我希望它被初始化并且对于这个类的所有实例都是相同的。

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;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。