其用途是提供.instance訪問權限,以防止這些類別的重複對象。防止使用單例訪問類/實例中的重複對象
這是一個很好的單例代碼實現嗎?
template <typename T> class singleton
{
public:
static T *ms_singleton;
singleton()
{
assert(!ms_singleton);
long offset = (long)(T *) 1 - (long)(singleton <T> *)(T *) 1;
ms_singleton = (T *)((long) this + offset);
}
virtual ~singleton()
{
assert(ms_singleton);
ms_singleton = 0;
}
static T &instance()
{
assert(ms_singleton);
return (*ms_singleton);
}
static T &Instance()
{
assert(ms_singleton);
return (*ms_singleton);
}
static T *instance_ptr()
{
return (ms_singleton);
}
};
template <typename T> T *singleton <T>::ms_singleton = NULL;
我如何使用它:
class test1: public singleton<test2>
{
// Something
};
如果不是,這裏有什麼問題?我應該在這裏重寫什麼?
如果真的是你想要的單身爲什麼不使用邁爾斯的辛格爾頓。 – Jarod42
這不是一個單身人士,因爲你有一個公共構造函數。 – NathanOliver
而你的偏移量計算很奇怪......你想完成什麼? – Jarod42