Как установить атрибут базового класса в конструкторе подкласса c ++ - PullRequest
0 голосов
/ 27 марта 2020

У меня есть следующий конструктор в классе Student, который является подклассом базового класса Person:

namespace Uni
{
    Uni::Student::Student(string majorCourse, int enrollNumber , string name, int age, bool isStudying)
        : Uni::Person::Person(std::__1::string name, int age, bool isStudying), majorCourse_(majorCourse), enrollNumber_(enrollNumber)    
    {
        cout << "[Temp] Student Default Constructor" << endl;
    }
    ...
}

Я хотел бы установить атрибуты name_, age_ и isStudying_ (которые являются атрибутами класса Person) со значениями name, age и isStudying, но я получаю сообщение об ошибке:

Uni::Person::Person(std::__1::string name, int age, bool isStudying)

имя типа не разрешено

Как это исправить?

1 Ответ

2 голосов
/ 27 марта 2020

Вы должны просто пересылать аргументы в базовый класс, поэтому потеряйте имена типов

 Uni::Student::Student(string majorCourse, int enrollNumber , string name, int age, bool isStudying)
  : Uni::Person::Person(name, age, isStudying),
    majorCourse_(majorCourse),
    enrollNumber_(enrollNumber)
 { }
...