1
我怎樣才能返回對象或調用派生類的,其基礎是單派生類,其基地返回objec是單身
我怎樣才能返回對象或調用派生類的,其基礎是單派生類,其基地返回objec是單身
你將不得不使用虛擬靜態方法,它是不是在C支持++(這是某個getInstance在Delphi中支持,據我所知 - 好奇)。
您必須決定是否只有兩個類或每個類的一個實例(例如,如果您通過GetInstance創建Derived實例,是否應該能夠創建Base實例)。
這些類裏面沒有辦法解決這個問題,你必須創建一個類工廠。類似的東西(我已經忽略了單例實現,使這個想法更清晰 - 顯然你知道,如何實現它)
class SingletonFactory
{
template<typename T>
static T * GetInstance()
{
return T.GetInstance();
}
};
class Base
{
friend class SingletonFactory;
private:
static Base * GetInstance()
{
// ...
}
protected:
Base()
{
}
};
class Derived : public Base
{
friend class SingletonFactory;
private:
static Derived * GetInstance()
{
}
protected:
Derived()
: Base()
{
}
};
// (...)
Derived * d = SingletonFactory::GetInstance<Derived>();
儘管有黑客/破解它可以實現。更好地改變設計,因爲這個要求看起來不自然。 – iammilind 2013-03-20 06:14:14
我同意@iammilind - 是否需要這樣的事情? – 2013-03-20 06:23:57