我真的不知道如何制定我的問題,但這裏是我試圖解決這一難題:從不同類型的模板類創建對象
if (config.a)
myObject = new Object<DummyInterface>();
else
myObject = new Object<RealInterface>();
所以任務是創建一個一個對象如果在config中指定了虛擬接口,則使用真實接口類。 那麼我該如何聲明myObject? 有幾個選項,我可以有對象類從抽象類派生無模板:即:
class Base
{
...
}
template <class T>
class Object : public Base
{
...
}
然後,我可以宣佈myObject的是:
Base* myObject;
但現在的問題是:如果我的對象類聲明非虛方法:
template <class T>
class Object : public Base
{
public:
T getInterface() { return myInterface;}
private:
T myInterface;
}
我不能把它像這樣:
myObject->getInterface()
,我不能做動態轉換,因爲我不知道是什麼類型,直到運行時...
任何建議如何解決呢?也許有另一種解決方案?
如果您需要將接口投射到實施中,則出現問題。嘗試審查你的課程設計。 –