1. ホーム
  2. c++

[解決済み] "抽象的な型のオブジェクトを割り当てることができません "エラー

2022-01-30 07:48:51

質問内容

エラーはこちら

vector<Graduate *> graduates;
graduates.push_back(new AliceUniversity(identifier,id,salary,average));

祖父母クラスです。

Graduate::Graduate(char identifier,
                   long id,
                   int salary,
                   double average)
    : _identifier(identifier),
      _id(id),_salary(salary),
      _average(average)
{
}

親クラスです。

UniversityGraduate::UniversityGraduate(char identifier,
                                       long id,
                                       int salary,
                                       double average)
    : Graduate(identifier,id,salary,average)
{
}

実クラス/子クラス。

AliceUniversity::AliceUniversity(char identifier,
                                 long id,
                                 int salary,
                                 double average)
    : UniversityGraduate(identifier,id,salary,average)
{
    _graduateNum++;
    _sumOfGrades += average;
    _avrA = getAverage();
}

遠回りなのは承知で、ここに全コードを書くことはできませんが......。

どのように解決するのですか?

C++では、少なくとも1つの 純粋仮想関数 と呼ばれます。 抽象クラス . そのクラスのオブジェクトを作成することはできませんが、そのクラスへのポインタまたは参照だけは持つことができます。

抽象クラスから派生している場合は、そのクラスのすべての純粋仮想関数をオーバーライドして定義してください。

あなたのスニペットから あなたのクラス AliceUniversity は抽象クラスのようです。の純粋仮想関数をすべてオーバーライドして定義する必要があります。 GraduateUniversityGraduate .

純粋仮想関数とは = 0; を宣言の末尾に追加します。

virtual void doSomething() = 0;

具体的な回答としては、エラーが発生したクラスの定義と、そのクラスが派生しているクラスの定義を掲載する必要があります。