Я пытаюсь использовать вложенные классы вместо множественного наследования. Я следую рекомендациям из книги, но я продолжаю получать ошибку в конструкторе. В принципе, человек - дедушка, ученик и служащий - родитель, а помощник по обучению - ребенок. TeachingAssistant будет иметь вложенный класс, который будет иметь ссылку на его внешний класс, но когда я использую код из книги я получаю две ошибкуИспользование вложенных классов вместо множественного наследования, C++
Я получаю ошибку
Ошибки 1 * "Нет соответствие конструктора для инициализации TeachingAssistant :: EmployeePart»
и эта ошибка
ошибка 2 "из определения линии 'EmployeePart' не соответствует ни одной декларации в 'TeachingAssistant :: EmployeePart"
Вот код:
class TeachingAssistant : public Student
{
public:
TeachingAssistant();
private:
class EmployeePart;
EmployeePart* employee_ptr;
};
class TeachingAssistant::EmployeePart : public Employee
{
public:
EmployeePart(TeachingAssistant&);
private:
TeachingAssistant* ta_part; // Allows access back to outer class
};
Ошибка 1 находится здесь, в этом конструкторе
TeachingAssistant::TeachingAssistant()
{
employee_ptr = new EmployeePart(this); // Pass pointer to implicit parameter
}
Ошибка 2 здесь
TeachingAssistant::EmployeePart::EmployeePart(TeachingAssistant* taval)
: ta_part(taval) {}
Почему эти ошибки выскакивают, если я ОКАЗЫВАЛОСЬ конструкторы?
'(TeachingAssistant * taval)' не то же самое, как подписи в декларации 'EmployeePart (TeachingAssistant &);'. –
Вы пытались определить конструкцию по умолчанию 'EmployeePart()' для исправления ошибки 1? – Artwo
Я до сих пор получаю сообщение об ошибке, если я использую конструктор по умолчанию – user2076774