如何定义基类



>我收到一个名为 C2504 的错误:"我的课程":基类未定义

我有3个班级,但他们都需要相互分享一些信息:

 #include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class MyStudent : public MyCourse {
   public :
     vector<double> assignScores;
     vector<double> testScores;
     string getName();
     string getAssignName();
     string getTestName();
     int getAssignScale();
     int getTestScale();
     void calcAssignPercentage();
     void calcTestPercentage();
     void addAssignScore(double sc);
     void addTestScore(double sc);
     void toStringDisplay();
};
class MyCourse : public MyStudent {
public:
    string courseName;
    vector <MyStudent> allStudents;
    void addStudent();
    void toStringDisplay();
    void addAssignAll();
    void addTestAll();
};

class MyDriver1 : public MyCourse, public MyStudent
{
public :
    void student();
    void assignment();
    void test();
    void show();
    void help();
    void quit();
};

当每个基类扩展到另一个基类时,我如何拥有一个基类?

继承层次结构中有一个循环引用。这在C++是不允许的,反正也没有意义。继承用于对"is-a"关系进行建模。如果B扩展A,则BA的更具体的例子。在这种情况下,A怎么可能也是A的更具体的例子?

您需要重新考虑您在这里实际尝试建模的内容,并相应地设计您的类层次结构。学生不是课程,课程也不是学生。继承不是对此关系进行建模的合适工具。

课程包含已注册学生的列表。对此进行建模的正确方法称为作文:您的课程类应包含某种学生列表。

class MyStudent : public MyCourse {

class MyCourse : public MyStudent {

class MyDriver1 : public MyCourse, public MyStudent

这是不好的做法。

基类首先应该定义子类要继承的 COMMON 功能和变量。 它不应该像上面那样设置,其中类都相互继承。

从这三门课退后一步,问问自己,所有这些类都需要什么共同点?

MyStudent不应延长MyCourseMyCourse不应延长MyStudent

如果您希望

存储学生的课程信息,则MyStudent应在其中的某个位置声明MyCourse对象

最新更新