模板和虚拟函数在C ++?允许? [英] Template and Virtual functions in C++ ? allowed ?

查看:112
本文介绍了模板和虚拟函数在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆