错误是:
- 对“名称”的引用不明确
- 提及“年龄”不明确
- 对成员“input1”的请求不明确
- 没有匹配的函数来调用“ashish3::inputage()”
这是我的代码:
#include <iostream>
#include <string>
using namespace std;
class ashish
{
protected:
string name;
public:
void input1(string name1)
{
cin >> name1;
name = name1;
}
int age;
};
class ashish2 : public ashish
{
public:
void inputage(int age1)
{
cin >> age1;
age = age1;
}
void display()
{
cout << name;
}
};
class ashish3 : public ashish, public ashish2
{
public:
void showme()
{
cout << "the name is" << name << endl << "the age is " << age << endl;
}
};
int main()
{
ashish3 rocker;
rocker.input1();
rocker.inputage();
rocker.display();
rocker.showme();
return 0;
}
最佳答案
您的代码存在两个主要问题:
您的
inputage
方法需要一个整数,但您调用它时不带参数。要修复此问题,只需将age1
设为局部变量而不是参数(没有理由将其作为参数)。您的
ashish3
类继承自ashish
和ashish2
。通过继承ashish2
,它也再次继承ashish
,因为ashish2
本身继承自ashish
,从而产生两次继承ashish
。因此,ashish
的所有成员在ashish3
中存在两次,导致前三个歧义错误。要解决这个问题,只需从ashish2
继承ashish3
(class ashish3 : public ashish2
)。
关于c++ - 如何修复该程序中的错误以及为什么我会收到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36211635/