一个基于C++11的单例模板类
Posted codecomposer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个基于C++11的单例模板类相关的知识,希望对你有一定的参考价值。
1 #ifndef _SINGLETON_H_ 2 #define _SINGLETON_H_ 3 4 #include <mutex> 5 #include <memory> 6 7 template<typename T> 8 class Singleton { 9 public: 10 template <typename... ArgTypes> 11 static T* getInstance(ArgTypes... args) { 12 static std::once_flag of; 13 std::call_once(of, init(std::forward<Args>(args)...)); 14 15 return instance_.get(); 16 } 17 private: 18 Singleton() = delete; 19 ~Singleton() = delete; 20 Singleton(const Singleton&) = delete; 21 Singleton(Singleton&&) = delete; 22 Singleton& operator=(const Singleton&) = delete; 23 Singleton& operator=(Singleton&&) = delete; 24 25 template <typename... ArgTypes> 26 static void init(ArgTypes... args) { 27 instance_.reset(new T(std::forward<ArgTypes>(args)...)); 28 } 29 30 static std::unique_ptr<T> instance_; 31 }; 32 33 template<class T> 34 std::unique_ptr<T> Singleton<T>::instance_ = nullptr; 35 36 #endif
以上是关于一个基于C++11的单例模板类的主要内容,如果未能解决你的问题,请参考以下文章