Mic*_*ael 4 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() (double val) {
return someting_clever;
}
};
Run Code Online (Sandbox Code Playgroud)
我想重载operator()以使用不同的算法,如std :: accumulate或std :: transform.我对operator()(double,double)的基类定义非常满意.但是我无法从派生类中调用它.我是否必须为从基础派生的每个类重写相同的代码?
这里的问题是在派生类中定义一个函数会在基类中隐藏相同的函数; 这就是您无法operator()(double, double)从派生类访问的原因.
但是有一种方法可以做到:你可以using在派生类中使用一个指令:
class derived: public base {
using base::operator();
virtual double operator() (double val) {
return someting_clever;
}
};
Run Code Online (Sandbox Code Playgroud)