我正在编写代码来存储不同学位的考试结果(目前是物理和化学)。
我有一个抽象基类student
,如下所示:
class student{
public:
virtual ~student(){}
//virtual function to add course + mark
virtual void addresult(std::string cName,int cCode,double cMark)=0;
//virtual function to print data
virtual void printinfo()=0; //to screen
virtual void outputinfo(std::string outputfilename)=0; //to file
};
然后我有一个物理派生类(并且会有一个类似的化学类):
class physics : public student{
protected:
std::string studentname;
int studentID;
std::map<int,course> courses; //map to store course marks
public:
//constructors/destructors
void addresult(std::string cName,int cCode,double cMark){course temp(cName,cCode,cMark);courses[cCode]= temp;}
void printinfo(){
//function to output information to screen
}
void outputinfo(std::string outputfilename){
//function to write student profile to file
}
};
然后,我主要希望有一张地图,可以在其中存储所有学生(物理和化学)。学生 ID 作为键,带有指向物理或化学的基类指针。学生是,我猜,要走的路。
我尝试了以下代码:
map<int,student*> allstudents;
physics S1(sName,sID);
physics* S2 = &S1;
allstudents.insert(pair<int,student*>(sID,S2));
但这没有用。我想我对应该指向什么有点困惑。你甚至可以用地图做到这一点吗?如果我存储信息,是否还需要任何“清理”。这边走?谢谢你的帮助。