C++ 纯虚函数是否可以是可变函数模板?;
我可以这样写一个类吗:C++ 纯虚函数是否可以是可变函数模板?;,c++,templates,stl,C++,Templates,Stl,我可以这样写一个类吗: 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)
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) {
}
};
如果这是不可能的,有什么方法可以实现吗?没有。虚拟函数根本不能是模板。这适用于任何模板(变量或非变量),以及所有虚拟函数(纯函数或非纯函数)
如果你仔细想想,这是有道理的。模板不是一个函数,它是一个模板,当编译器调用它时,编译器将通过它生成一个函数。另一方面,虚拟函数必须是实函数,编译器通过函数指针调用它以实现多态行为。否。虚拟函数根本不能是模板。这适用于任何模板(变量或非变量),以及所有虚拟函数(纯函数或非纯函数)
如果你仔细想想,这是有道理的。模板不是一个函数,它是一个模板,当编译器调用它时,编译器将通过它生成一个函数。另一方面,虚拟函数必须是实函数,编译器通过函数指针调用该函数以实现多态行为。一种可能的解决方法是为参数定义标准化结构并依赖多态性。比如:)@fareano好主意,谢谢fareano!一个可能的解决办法是为参数定义一个标准化结构,并依赖多态性。比如:)@fareano好主意,谢谢fareano!