我有一个基类与虚拟函数:强插功能仅适用于特定类型的模板
class Base
{
public:
virtual void Function();
};
void Base::Function()
{
cout << "default version" << endl;
}
和派生模板类:
template <class T> class Derived : public Base
{
public:
virtual void Function();
};
有没有一种方法,使Function()
是从基础类为所有类型,除了一些选择的?因此,我要的是能够定义,比如说一个被覆盖的Function()
,int
和long
:
void Derived<int>::Function()
{
cout << "overriden version 1" << endl;
}
void Derived<long>::Function()
{
cout << "overriden version 2" << endl;
}
,并有Function()
对于所有其他类型的默认版本,没有Function()
他们明确的定义,因此的
int main()
{
Derived<int> derivedInt;
derivedInt.Function();
Derived<long> derivedLong;
derivedLong.Function();
Derived<double> derivedDouble;
derivedDouble.Function();
}
输出将
overriden version 1
overriden version 2
default version
它是p ossible?
写得很好的问题。 –