singleton.hpp 620 B

123456789101112131415161718192021222324252627282930313233
  1. #pragma once
  2. #include <string>
  3. #include <iostream>
  4. /**
  5. * 基础错误类
  6. */
  7. namespace ylib
  8. {
  9. // 单例基类模板
  10. template <typename T>
  11. class singleton {
  12. public:
  13. // 获取单例对象的静态方法
  14. static T* getInstance() {
  15. static T instance; // C++11以后,局部静态变量的初始化是线程安全的
  16. return &instance;
  17. }
  18. protected:
  19. // 默认构造函数
  20. singleton() = default;
  21. // 禁止拷贝构造函数和拷贝赋值操作
  22. singleton(const singleton&) = delete;
  23. singleton& operator=(const singleton&) = delete;
  24. // 允许析构
  25. virtual ~singleton() = default;
  26. };
  27. }