[英]Why ambiguity only for overloaded operators and not for functions with "same" name but different scope?
[英]Function overloaded ambiguity in inheritance wherein functions have same number of parameters
#include<iostream>
using namespace std;
class base1{
public :
void greet(int a){
cout<<"How are you ?"<<a<<endl;
}
};
class base2{
public:
void greet(int a){
cout<<"Comment ca va ?"<<a<<endl;
}
};
class derived : public base1 ,public base2{
public:
void greet(int){
base1::greet(int); // gives error here ...
}
};
int main(){
derived d;
d.greet(9); // without defining greet() in we get error
return 0;
}
给我错误:第 22 行:'int' 之前的预期主表达式 请帮忙。 我用谷歌搜索了这个问题,但到处都没有 arguments...
base1::greet(int)
不是对base1::greet
function 的调用。要成为调用,您需要传递实际值(例如base1::greet(9)
)。
然而,将值传递给base1::greet
有点困难,因为derived::greet
::greet 的参数被忽略了。 您需要接受参数并将其传递:
void greet(int value)
{
// Call base1::greet with the value passed to this function (derived::greet)
base1::greet(value);
}
除了上述之外,如果您希望derived::greet
始终调用base1::greet
,您可以using
关键字将base1::greet
function 拉入derived
的 scope:
class derived : public base1, public base2
{
public:
// All calls to derived::greet will actually be base1::greet
using base1::greet;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.