2
作爲一種工廠方法設置,我希望註冊函子,每個函子都創建不同類型的對象,但滿足一個通用接口 - 即所有創建子類爲核心類的創建對象。具有不同模板參數的模板對象的集合
說我有這樣的:
template <class T> struct FactoryMethod
{
X* create();
}
我不能有(IIRC)std::map<std::string,FactoryMethod*>
因爲每個FactoryMethod
模板專業化是一個獨立的類型。但我可以做到:
struct IFactoryMethod
{
virtual X* create()=0;
};
template <class T> struct FactoryMethod : public IFactoryMethod
{
virtual X* create();
};
std::map<std::string,IFactoryMethod*> factories;
,對嗎?我不知道標準STL有辦法使這個整潔,但我猜是提升 - 但是我們現在不使用提升,我仍然有興趣。
然後想法是factories
可以根據類型名稱(例如從XML讀取)來查找以創建正確的類型。
它是僞代碼,給我一個休息!雖然你能澄清「所有權執行指針」嗎? – 2011-01-20 22:25:43