0

学生データベースの抽象基本クラスを継承する 2 つの C++ クラスがあります。基本クラスは、すべての学生情報 (名前、コース & マークの ID ベクトル) を含むレコードです。

class student{
protected:
    string fName,sName;
    int id;
    vector<string> cname;
    vector<double> cmark;
public:
    virtual ~student();
    virtual void addClass(string name, double mark)=0;
};

addCourse以下のクラスの関数で、ベクター cname と cmark にアクセスできるようにする必要があります

class degree : public student{
public:
    degree(string f, string s, int i){
        this->setName(f,s); 
        this->setID(i);
    }
    ~degree();

    void AddCourse(string name, int mark){

    }

setコンストラクターで行ったように、基本クラスで関数を作成せずにこれを行う方法がわかりませんdegree

基本クラスでセット関数を作成することもできますが、コードの乱雑さを軽減するために、関数を使用せずに継承された要素を初期化する方法を使用したいのですが、これは可能ですか? 使用this->cnameすることを考えましたが、エラーが発生しました。

4

1 に答える 1

0

以下のクラスの addCourse 関数でベクター cname と cmark にアクセスできる必要があります

それらにアクセスするだけで、それらは保護されているため、派生クラスはアクセスできます。

void AddCourse(string name, int mark){
  cname.push_back(name);
  cmark.push_back(mark);
}
于 2013-05-05T13:43:44.500 に答える