singleton.hpp 576 B

123456789101112131415161718192021222324252627282930
  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(const singleton&) = delete;
  21. //singleton& operator=(const singleton&) = delete;
  22. // 允许析构
  23. //virtual ~singleton() = default;
  24. };
  25. }