如何修复这个程序中的错误,以及为什么我会得到它
how to fix errors in this program and why i m getting it?
错误为:
- 对"name"的引用不明确
- 对"年龄"的引用不明确
- 对成员"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
(class ashish3 : public ashish2
)继承ashish3
。
#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 ashish2
{
public:
void showme()
{
cout << "the name is" << name << endl << "the age is " << age << endl;
}
};
int main()
{
ashish3 rocker;
rocker.input1("xasdas");
rocker.inputage(123);
rocker.display();
rocker.showme();
return 0;
}
您出现了一些错误,没有使用参数调用函数。您没有添加应该添加的<string>
标头。您不应该让ashish3同时继承ashish1和ashish2,因为ashish2将所有函数和变量作为ashish类继承。C++与C语言不同,请删除C标记。
相关文章:
- 如果我对"while"块发表评论,为什么程序会死机?其中的"yield"线有何影响?
- 为什么我可以在不链接任何额外库的情况下包含 sys/*.h
- 为什么此C++代码中的构造函数模棱两可以及如何修复它
- 虚幻引擎v4.18为什么这会导致崩溃以及我该如何修复
- 为什么更改链接顺序可以修复一个系统上的一些链接错误?
- 我得到一个无限的循环,我不确定为什么或如何修复它
- 为什么我在尝试将字符传递给我的函数以及如何修复它时会获得 SIGSEGV
- 为什么对 CreateWindow 的调用失败,以及如何修复它
- 在这种情况下,为什么Sfinae对我来说不正确以及如何修复它
- 为什么调用定义的构造函数会导致结构声明中出现错误,我该如何修复它
- 当 int 方法工作正常时,void 方法有何不同,或者为什么我不能调用 void 方法?
- 为什么会崩溃?我该如何修复它
- 如何修复这个程序中的错误,以及为什么我会得到它
- 为什么这会修复堆损坏
- 内存仍然可以访问错误修复,但为什么
- 为什么以及在何处在C++中使用引用和指针
- 为什么通过引用传递可以修复我的递归错误
- 为什么安装vcredist_x86.exe不能修复 SideBySide 错误,当我在一台机器上开发 EXE 并在另一台机器上运行它时?
- 为什么 'const int ci = 2;std::forward<int>(ci);' 工作以及如何修复/解决它?
- libgnustl_shared.从何而来?为什么它的大小不同后,我建立