模板和虚拟函数在C ++?允许? [英] Template and Virtual functions in C++ ? allowed ?
本文介绍了模板和虚拟函数在C ++?允许?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经读过网络上的模板虚函数是不允许的,是真的吗?
这是一个有点奇怪,因为这个代码编译伟大的Eclipse的g ++
template< class T&
class A {
public:
virtual〜A< T>(){}
virtual void printMe(){cout< I am A class<< endl;}
};
template< class T>
class B:public A< T> {
public:
void printMe(){cout< I am B class<< endl;}
};
int main(){
A< int> * ptr = new B< int> ;;
ptr-> printMe();
delete ptr;
return 0;
}
尊敬的Ronen
您所引用的限制会使用此范例中的虚拟方法(如您范例中所示)形式:
类类型{
// ...
template< typename T& virtual void r()const;
};
I've read over the web that template virtual functions are not allowed , is it true ? It's a little bit weird since this code compile great on my Eclipse's g++
template <class T>
class A {
public:
virtual ~A<T>() { }
virtual void printMe() {cout << "I am A class" << endl;}
};
template <class T>
class B: public A<T> {
public:
void printMe() {cout << "I am B class" << endl;}
};
int main() {
A<int> * ptr = new B<int>;
ptr->printMe();
delete ptr;
return 0;
}
Regards,Ronen
解决方案
virtual methods in a template type (as seen in your example) is valid.
the restriction you refer to takes this form:
class type {
//...
template <typename T> virtual void r() const;
};
这篇关于模板和虚拟函数在C ++?允许?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文