C++ 使用基类的重载函数
我试着做一些类似的事情C++ 使用基类的重载函数,c++,overloading,derived-class,C++,Overloading,Derived Class,我试着做一些类似的事情 class base { public: virtual double operator() (double val) = 0; virtual double operator() (double prev, double val) { return prev + operator()(val); } }; class derived: public base { virtual double operator() (do
class base {
public:
virtual double operator() (double val) = 0;
virtual double operator() (double prev, double val) {
return prev + operator()(val);
}
};
class derived: public base {
virtual double operator() (double val) {
return someting_clever;
}
};
我想重载操作符()以将其与不同的算法(如std::acculate或std::transform)一起使用。我完全满意操作符()的基类定义(double,double)。但是,我不能从派生类调用它。我是否必须为从base派生的每个类重写相同的代码?您是否尝试过使用指令
class derived: public base {
virtual double operator() (double val) {
return someting_clever;
}
using base::operator();
};
这里的问题是,在派生类中定义函数会隐藏基类中的相同函数;这就是您无法从派生类访问
operator()(double,double)
的原因
但是有一种方法可以做到:您可以在派生类中使用using
指令:
class derived: public base {
using base::operator();
virtual double operator() (double val) {
return someting_clever;
}
};
我想你遇到的问题和我一样