給定下面的代碼,編譯器顯示一條消息指出error: templates may not be ‘virtual’
。有沒有人有如何解決這個錯誤的建議?模板可能不是'虛擬的'
template < class FOO_TYPE>
class CFoo{
public:
...
template < class BAR_TYPE >
virtual void doSomething(const CBar<BAR_TYPE> &); // here's the error
...
virtual ~CFoo();
protected:
MyClass <FOO_TYPE> * m_pClass;
};
template < class FOO_TYPE >
template < class BAR_TYPE >
void CFoo<FOO_TYPE>::doSomething(const CBar<BAR_TYPE> & refBar){
...
}
這不是一個錯誤,它是一個功能,你不能聲明一個虛擬的函數模板。你需要探索另一種方法,這取決於你想要做什麼...... – Nim 2011-02-10 19:59:48
事情是函數的參數是一個模板對象,我不能改變它的聲明。 – Javier 2011-02-10 20:02:15
爲什麼你需要爲CBar的每個實例使用不同的函數? – 2011-02-11 08:05:29