我已经通过网络阅读了不允许使用模板虚拟功能的信息,这是真的吗? 这有点奇怪,因为这段代码在我的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;
}
的问候,罗南
答案 0 :(得分:3)
模板类型中的虚拟方法(如示例所示)有效。
您所引用的限制采用以下形式:
class type {
//...
template <typename T> virtual void r() const;
};
答案 1 :(得分:0)
这里有的不是模板虚拟函数,而是包含普通虚函数的模板类。
正如您所发现的,这非常好。