【发布时间】:2021-02-18 10:56:51
【问题描述】:
我正在输入以下代码,并且在第 1 行收到以下错误
[Error] no matching function for call to 'int_adder::add()
#include <iostream>
using namespace std;
class adder{
public:
void add(){ cout <<"adder::add() "; }
};
class int_adder : public adder{
public:
int add(int a, int b){
return (a + b);
}
};
int main(){
int_adder ia;
ia.add(); //LINE-1
cout << ia.add(10, 20); //LINE-2
return 0;
}
【问题讨论】:
-
您在
int_adder中的函数正在影响基类中的函数。要将其拉入重载集,您可以在int_adder的定义中添加using adder::add;。 -
int_adder::add()的签名(参数类型和返回类型)与adder::add()不同。根据标准,int_adder::add()具有隐藏adder::add()的效果,不会覆盖它或重载它。这被非正式地描述为“隐藏规则”。 -
这能回答你的问题吗? stackoverflow.com/questions/18688799/…
-
这能回答你的问题吗? What is the hiding rule in c++?