关于多层继承的问题,初学的我脑袋晃啊!
#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
Student(int n,string nam)
{
num=n;
name=nam;
}
void display()
{
cout<<"num:"<<num<<endl;
cout<<"name:"<<name<<endl;
}
protected:
int num;
string name;
};
class Student1:public Student
{
public:
Student1(int n,char nam[10],int a):Student(n,nam)
{
age=a;
}
void show()
{
display();
cout<<"age:"<<age<<endl;
}
private:
int age;
};
class Student2:public Student1
{
public:
Student2(int n,string nam,int a,int s):Student1(n,nam,a)
{
score=s;
}
void show_all()
{
show();
cout<<"score:"<<score<<endl;
}
private:
int score;
};
int main()
{
Student2 stud(10010,"Li",17,89);
stud.show_all();
return 0;
}
我看了,好像也没什么错嘛,但就是编译不通过。。。帮忙看看吧!
[解决办法]
[code=c/c++]
Student2(int n,string nam,int a,int s):Student1(n,(char *)nam.c_str(),a) //这里类型不匹配,第二个参数修改
[/code]
[解决办法]
Student2(int n,string nam,int a,int s):Student1(n,(char *)nam.c_str(),a) //这里类型不匹配,第二个参数修改
[解决办法]
Student1(int n,char nam[10],int a):Student(n,nam) //
改成:
Student1(int n,string nam,int a):Student(n,nam)
//lz要学会看编译错误信息
[解决办法]
貌似多重继承是C++中一个不是很好的特性
[解决办法]
#include <iostream> #include <string> using namespace std; class Student { public: Student(int n,string nam) { num=n; name=nam; } void display() { cout <<"num:" <<num <<endl; cout <<"name:" <<name <<endl; } protected: int num; string name; }; class Student1:public Student { public: Student1(int n,/*char nam[10]*/string nam,int a):Student(n,nam) //主要把这里改一下!!!!!!!!// 数组不能够直接赋值的!!!{ age=a; } void show() { display(); cout <<"age:" <<age <<endl; } private: int age; }; class Student2:public Student1 { public: Student2(int n,string nam,int a,int s):Student1(n,nam,a) { score=s; } void show_all() { show(); cout <<"score:" <<score <<endl; } private: int score; }; int main() { Student2 stud(10010,"Li",17,89); stud.show_all(); system("pause");return 0; }
[解决办法]
尽量别用多重继承,能用成员变量就用成员变量。
[解决办法]
这个是多层而不是多重吧....
[解决办法]
嗯,这不是多重继承。。。
多层而已。
[解决办法]
报什么错呢?
[解决办法]