Я не анализировал весь код, но вы, похоже, не понимаете, как объявлять вызовы конструктору базового класса;
class Student : public Person
{
...
Student() : Person();
...
};
Вызов конструктору базового класса должен быть выполнен на фактическом реализация конструктора только.Поскольку вы уже делаете это с
Student::Student() : Person() {
, вы можете просто изменить объявление на
class Student : public Person
{
...
Student();
...
};
, и все должно получиться лучше.
Редактировать: Добавлениеответ на следующий вопрос ниже:
Линия
Employee(string department, string jobTitle, int yearOfHire)
: Person(name, socialSecurityNumber, age, gender, address, phoneNumber) {
не имеет смысла по той же причине.Если вы хотите иметь возможность построить Employee со всеми этими параметрами, вам нужно вместо этого объявить конструктор как
Employee(string department, string jobTitle, int yearOfHire, name,
socialSecurityNumber, age, gender, address, phoneNumber) {
и реализовать его как
Employee::Employee(string department, string jobTitle, int yearOfHire, name,
socialSecurityNumber, age, gender, address, phoneNumber)
: Person(name, socialSecurityNumber, age, gender, address, phoneNumber) {
, передав таким образомПараметры для конструктора базового класса.