小编G-s*_*G-s的帖子

仅对模板中的某些类型覆盖功能

我有一个带有虚函数的基类:

class Base
{
public:
  virtual void Function();
};

void Base::Function()
{
  cout << "default version" << endl;
}
Run Code Online (Sandbox Code Playgroud)

和派生的模板类:

template <class T> class Derived : public Base
{
public:
  virtual void Function();
};
Run Code Online (Sandbox Code Playgroud)

Function()除了某些选定类型之外,是否有办法从所有类型的基类中提取出来?所以,我想是能够定义一个重写Function(),比如说,intlong

void Derived<int>::Function()
{
  cout << "overriden version 1" << endl;
}

void Derived<long>::Function()
{
  cout << "overriden version 2" << endl;
}
Run Code Online (Sandbox Code Playgroud)

并具有Function()所有其他类型的默认版本,而没有Function()为它们明确定义,因此输出为

int main ()
{
  Derived<int> derivedInt;
  derivedInt.Function();

  Derived<long> derivedLong;
  derivedLong.Function();

  Derived<double> …
Run Code Online (Sandbox Code Playgroud)

c++ templates overriding

4
推荐指数
2
解决办法
3878
查看次数

标签 统计

c++ ×1

overriding ×1

templates ×1