【发布时间】:2015-02-14 20:05:50
【问题描述】:
我正在尝试覆盖模板方法。 这是一个最小的例子:
#include <iostream>
class Base
{
public:
template <typename T>
void print(T var)
{
std::cout << "This is a generic place holder!\n";
}
};
class A: public Base
{
public:
template <typename T>
void print(T var)
{
std::cout << "This is A printing " << var << "\n";
}
};
class B: public Base
{
public:
template <typename T>
void print(T var)
{
std::cout << "This is B printing " << var << "\n";
}
};
int main()
{
Base * base[2];
base[1] = new A;
base[2] = new B;
base[1]->print(5);
base[2]->print(5);
delete base[1];
delete base[2];
return 0;
}
两种情况下的输出都是This is a generic place holder!
如何实现调用派生类的方法?
如果方法不是模板,我可以定义它virtual,它会按预期工作(已经尝试过),但它需要是模板。那我做错了什么?
【问题讨论】:
标签: c++ templates inheritance