我有如下代碼。我有一個抽象模板類Foo和兩個從模板實例派生的子類(Foo1和Foo2)。我希望在我的程序中使用可以指向Foo1或Foo2類型的對象的指針,因此我創建了一個IFoo接口。在C++中爲抽象類模板創建一個接口
我的問題是我不知道如何在接口中包含functionB,因爲它依賴於模板實例化。是否有可能通過接口使功能B可訪問,或者我試圖做到不可能?
非常感謝您的幫助。
class IFoo {
public:
virtual functionA()=0;
};
template<class T>
class Foo : public IFoo{
public:
functionA(){ do something; };
functionB(T arg){ do something; };
};
class Foo1 : public Foo<int>{
...
};
class Foo2 : public Foo<double>{
...
};
但在技術上,我不會要創建的IFoo的一個實例,我只希望創建一個Foo1(或2)(由IFoo指針指向)的實例,並且我認爲可以通過動態邊界找到適當的函數? – bishboshbash 2010-07-15 00:34:06
@bishboshbash:對於通過動態綁定找到的函數,必須知道所有的參數類型;否則,如果使用重載函數,則不清楚要查找什麼。 – liori 2010-07-15 00:38:10
我想我明白了。如果我創建了Foo1的實例並且調用了Foo1.functionB(..),它會正常工作,因爲模板已經被實例化。 我可以通過多重繼承創建一個抽象類來指向類型爲Foo1或Foo2的對象,因此可以避免動態綁定嘗試通過一個未被實例化的模板的問題? – bishboshbash 2010-07-15 00:51:24