错误是:
这是我的代码:
#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;
}
答案 0 :(得分:1)
您的代码存在两个主要问题:
您的inputage
方法需要一个整数,但您可以在没有参数的情况下调用它。要修复它,只需将age1
作为局部变量而不是参数(没有理由将它作为参数)。
您的ashish3
课程继承自ashish
和ashish2
。继承自ashish2
后,它还会再次从ashish
继承,因为ashish2
本身继承自ashish
,导致从ashish
继承两次。因此,ashish
的所有成员都存在于ashish3
两次,导致前三个模糊错误。要绕过它,只能从ashish3
(ashish2
)继承class ashish3 : public ashish2
。
答案 1 :(得分:0)
#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 class。 C ++是一种与C不同的语言请删除C标签。