我想從一個類中調用一個靜態方法,我將在運行時確定這個類,但是我知道它是給定類的子類。所以我們可以說我有這些類在C++中,我可以將類類型表示爲變量嗎?
class super {
public:
super();
static super *loadMe (ifstream &is);
}
class subA : public super {
public:
subA();
static super *loadMe (ifstream &is);
}
class subB : public super {
public:
static super *loadMe (ifstream &is);
private:
subB();
}
而且我們說,我想在運行時確定(基於文件中的什麼)是否加載蘇巴或subB的未來。我能做到這一點的方法之一是使用空對象調用的方法
super getLoadType (ifstream &is) { if(complicatedFunctionOfIs(is)) return subA(); return subB()}
super *newObj = getLoadType(is).loadMe(is);
,但我做了subB的私人的無參數的構造函數,所以我不能在這裏這樣做。但是我並不需要一個超級對象,而只需要一個超級子類的類型。那麼有沒有辦法將它表示爲一個變量?編輯:我知道在這種情況下,我可以返回一個函數指針,但我正在考慮更復雜的例子,可能涉及需要調用多個靜態函數。
聽起來像你想抽象工廠或類似的東西 – 2010-10-28 13:08:52