我有一个实现了单模板类:静态变量初始化
template<typename T>
class Singleton {
static Singleton const& get() const { return _instance; }
private:
Singleton();
static Singleton _instance;
};
有此模板的一些特例,例如,用于Type1
和Type2
。它的构造函数有互相呼叫get()
。我看到一个问题。让我们假设的Type1
Singleton
在第一构造:
Singleton<Type1>::Singleton() {
Singletion<Type2>::get();
}
所以Type2
的Singleton
尚未建立。 get()
会返回什么?
是的。好主意。但接下来会发生什么? 'Singleton :: Singleton()'调用正在构建的'Singleton '的'Singleton()'Singleton()''的执行需要'static'' _instance'变量。 –
user14416
2013-03-04 02:28:31
@ user14416可能未定义的行为。这是一个循环依赖,肯定是一个错误。 – Pubby 2013-03-04 02:37:21
你的想法不适合我。在程序启动期间,我需要这些单例初始化。 – user14416 2013-03-04 02:38:01