提问者:小点点

纯虚函数可以做变量函数模板吗?[重复]


我可以这样写一个类吗:

class Base {
  template <typename...Args>
  virtual double calculate(const Args&...args) = 0;
};

然后我想这样写派生类:

class Derived1 : public Base {
  double calculate(int a) {
  }
};

class Derived2 : public Base {
  double calculate(int a, int c) {
  }
};

如果做不到,有没有什么方法可以做到呢?


共1个答案

匿名用户

不行。虚函数根本不能是模板。这适用于任何模板(variadic或非variadic)以及所有虚函数(pure或非pure)。

想一想,也不无道理。模板不是一个函数,它是一个模板,编译器在调用它时将通过它来制作一个函数。另一方面,虚函数必须是实函数,编译器通过函数指针调用它来实现多态行为。

相关问题