エラーはこちらです:
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つの 純粋な仮想関数 を持つクラスがabstract classと呼ばれます。そのクラスのオブジェクトを作成することはできませんが、ポインタまたはオブジェクトへの参照のみを持つことができます。
抽象クラスから派生している場合は、クラスのすべての純粋仮想関数をオーバーライドして定義してください。
スニペットからクラスAliceUniversity
は抽象クラスのようです。クラスGraduate
およびUniversityGraduate
のすべての純粋仮想関数をオーバーライドおよび定義する必要があります。
純粋仮想関数は、宣言の最後に_= 0;
_が付いたものです。
例:virtual void doSomething() = 0;
特定の回答については、エラーが発生したクラスと、そのクラスの派生元のクラスの定義を投稿する必要があります。
親クラスの1つで宣言され、子クラスのいずれにも実装されていない仮想関数が必要です。すべての仮想関数が継承チェーンのどこかに実装されていることを確認してください。クラスの定義に、実装されていない純粋な仮想関数が含まれている場合、そのクラスのインスタンスを構築することはできません。