gpt4 book ai didi

C++类多重继承错误

转载 作者:行者123 更新时间:2023-11-28 02:57:31 25 4
gpt4 key购买 nike

我一直在研究多重继承。我制作了一个程序,但它一直给我一个错误,例如 Human::getInfo is ambiguous。我该如何解决问题这是我的代码

#include <iostream>
#include <string>
using namespace std;

class Man{
protected:
std::string name;
public:
void getInfo(string hName){
name = hName;
}
void showInfo(){
std::cout << "Your name is: " << name << std::endl;
std::cout << "And you are a MAN" << std::endl;
}
};

class Women:public Man{
public:
Women(){}
void Women_showInfo(){
std::cout << "Your name is: " << name << std::endl;
std::cout << "And you are a Women" << std::endl;
}
};

class Human:public Women, public Man{
public:
Human(){}
};
int main(){
//local variables
string choice;
string name;
//class object
Human person;
//user interface
cout << "What your name: " ;
cin >> name;
cout << "Are you a [boy/girl]: ";
cin >> choice;
//saving name
person.getInfo(name); //ambiguous
//if handler
if (choice == "boy"){
person.showInfo(); //ambiguous
}else if(choice == "girl"){
person.Women_showInfo(); //works fine no error
}
system("pause");
return 0;
}

也可以随意更改我的代码,如果您能使用我的代码指出我的错误,那就更好了。

最佳答案

你的设计相当有问题,但特别的歧义出现是因为 Human 继承自 WomanMan,但是 Woman 已经继承自 Man

因此 Human 中有两个 getinfo() 函数 - Human::Man::getinfo()Human: :女人::男人::获取信息()。除非你告诉编译器使用哪一个它不知道,因此报告错误。

关于C++类多重继承错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652300/

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