【发布时间】:2020-04-29 08:25:44
【问题描述】:
尝试覆盖“Solver::solve(P key)”函数时,我不断收到此错误:
标记为“覆盖”的非虚拟成员函数隐藏了虚拟成员函数。 隐藏的重载虚函数 'Solver,std::allocator>>>>::solve' 在这里声明:类型 mimsatch...
求解器.h:
...
template<class P, class S>
class Solver{
public:
virtual S solve(P key) = 0;
};
B.h
using namespace std;
namespace server_side {
class B: public Solver<string, vector<vector<double>>> {
public:
string solve(vector<vector<double>> mat) override {//<--- The error is here, on "override"
code...
}
但是,如果我将 vector<vector<double>>> 替换为 std::string,它会完美运行。
问题是我需要它是vector<vector<double>>>...
可行的替代代码:
...
using namespace std;
namespace server_side {
class B: public Solver<string, string> {
public:
string solve(string mat) override {
code...
}
任何想法如何解决它? 谢谢!
【问题讨论】:
标签: c++ generics inheritance overriding