繁体   English   中英

Function inheritance 中的重载歧义,其中函数具有相同数量的参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM