gpt4 book ai didi

c++ - 使用基类的重载函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:31 25 4
gpt4 key购买 nike

我尝试做类似的事情

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;
}
};

我想重载 operator() 以将其用于不同的算法,例如 std::accumulate 或 std::transform。我对 operator()(double, double) 的基类定义非常满意。但是我不能从派生类调用它。我是否必须为从 base 派生的每个类重写相同的代码?

最佳答案

这里的问题是,在派生类中定义一个函数会在基类中隐藏相同的函数;这就是为什么您无法从派生类访问 operator()(double, double) 的原因。

但是有一种方法可以做到:您可以在派生类中使用 using 指令:

class derived: public base {
using base::operator();
virtual double operator() (double val) {
return someting_clever;
}
};

关于c++ - 使用基类的重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com