【发布时间】:2011-06-25 02:49:04
【问题描述】:
鉴于下面的代码,编译器会显示一条指向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 ){
...
}
【问题讨论】:
-
这不是一个错误,它是一个特性,你不能声明一个虚拟的函数模板。你需要探索另一种方法,这取决于你想要做什么......
-
问题是函数的参数是一个模板对象,我不能改变它的声明。
-
为什么每个 CBar 实例都需要不同的函数?
标签: c++ templates polymorphism virtual