这是问题陈述:
用下面的代码设计一个名为 Student 的基类。 2 个字段:- (i) 姓名 (ii) 身份证。派生2类 从 Student 基类调用 Sports and Exam。 Class Sports 有一个字段叫做 s_grade 和 Exam 类有一个名为 e_grade 的字段,它是整数字段。派生一个名为 Results 的类 继承自体育和考试。这个类有一个字符数组或字符串字段来表示 最后的结果。它还有一个名为 display 的成员函数,可用于显示 最后结果。举例说明这些类在 main 中的用法。
#include<iostream>
#include<string>
using namespace std;
class Student
{
string name;
int id;
public:
Student(string n, int a) {name = n; id = a;}
void display()
{
cout<<"Student name: "<<name;
cout<<"\nStudent I.D.: "<<id;
}
};
class Sports : public Student
{
int s_grade;
public:
Sports(string n, int a,int s):Student(n,a) {s_grade = s;}
void display()
{
cout<<"\nSports grade: "<<s_grade;
}
};
class Exam: public Student
{
int e_grade;
public:
Exam(string n, int a,int e):Student(n,a) {e_grade = e;}
void display()
{
cout<<"\Exam grade: "<<e_grade;
}
};
class Results: public Sports, public Exam
{
string result;
public:
Results(string n,int i, int s, int e):Sports(n,i,s):Exam(n,i,e) {}
void display()
{
Student::display();
Sports::display();
Exam::display();
}
};
这是我的尝试,但存在严重缺陷。
有什么解决办法吗?
非常感谢任何帮助。
最佳答案
学生类(class)必须是虚拟的。否则结果将有两份学生成员。这将导致歧义。
关于c++ - 如何通过定义派生类的构造函数来实例化两个基类的私有(private)数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26447858/