這是一種合法的方式來創建一個基礎單體對象,以確保它的所有子對象都是單例對象嗎?我想將這與工廠模式結合使用,以確保所有因子都是單身。C++中的基礎單體對象
關鍵類是爲了防止孩子在單身構造函數週圍黑客攻擊,但基本上只是一個形式參數。
這種方法有什麼特別的錯誤嗎?
class singleton
{
protected:
struct key
{
private:
friend class singleton;
key(){}
};
public:
singleton(const key&)
{}
template <class child> static child* getInstance()
{
static key instanceKey;
static child* unique = new child(instanceKey);
return unique;
}
private:
};
class test : public singleton
{
public:
test(singleton::key& key)
: singleton(key)
{}
void init()
{
//init object
}
private:
};
int main()
{
test* t = singleton::getInstance<test>();
return 0;
}