C++ C++;类多重继承错误
我一直在研究多重继承。我已经做了一个程序,但它一直给我一个错误,比如Human::getInfo不明确。我如何解决这个问题 这是我的密码C++ C++;类多重继承错误,c++,inheritance,syntax-error,multiple-inheritance,C++,Inheritance,Syntax Error,Multiple Inheritance,我一直在研究多重继承。我已经做了一个程序,但它一直给我一个错误,比如Human::getInfo不明确。我如何解决这个问题 这是我的密码 #include <iostream> #include <string> using namespace std; class Man{ protected: std::string name; public: void getInfo(string hName){ name = hName;
#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;
}
#包括
#包括
使用名称空间std;
班主任{
受保护的:
std::字符串名;
公众:
void getInfo(字符串名){
name=hName;
}
void showInfo(){
std::cout你的设计很有问题,但是特别的歧义出现了,因为人类继承了女性
和男性
,但是女性
已经继承了男性
因此Human
中有两个getinfo()
函数-Human::Man::getinfo()
和Human::Woman::Man::getinfo()
。除非您告诉编译器要使用哪一个,它不知道,因此会报告一个错误。通过在Human类声明中添加以下内容:使用Man::getinfo()如果你不介意的话,你能告诉我如何使用这个代码吗?因为它很难理解@Jonathan Potterin而不是person.getInfo(name);
你会做person.Man::getInfo(name);
或者person.Woman::Man::getInfo(name);
。我做了,但上面写着基类“Man”是不明确的。@JonathanPotterIn事实上它给了我一个错误:非静态成员引用必须是相对于特定对象的