如何修复这个程序中的错误,以及为什么我会得到它

how to fix errors in this program and why i m getting it?

本文关键字:为什么 何修复 程序 错误      更新时间:2023-10-16

错误为:

  • 对"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;
}

您的代码有两个主要问题:

  1. inputage方法需要一个整数,但调用它时没有参数。要修复它,只需将age1设为局部变量而不是参数(没有理由将其设为参数)。

  2. 您的ashish3类继承自ashishashish2。通过从ashish2继承,它也从ashish继承了一次,因为ashish2本身继承了ashish,导致从ashish继承了两次。因此,ashish的所有成员在ashish3中存在两次,导致前三个模糊性错误。为了绕过它,只从ashish2class 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标记。

相关文章: