Помещение объектов одного класса в массив другого класса - PullRequest
0 голосов
/ 16 января 2020

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

Student* student11 = new Student("Vince", "Vaughn", "7-th Avenue", "New York", "783-945-90-28", 49);
Student* student12 = new Student("Vince", "Mcmahon", "Beverly Hills", "Los Angeles", "874-940-42-12", 47);
Student* student13 = new Student("Stone Cold", "Steve Austin", "Dallas", "Texas", "385-421-47-95", 34);

Затем я создал объект класса Teacher:

Teacher* teacher1 = new Teacher("Dave", "Bautista", "Washington", "Washington DC", "943-244-93-12", 31);

Поэтому задача состоит в том, чтобы поместить созданные объекты класса Student в массив, принадлежащий другому классу Course. И сделать то же самое с объектом класса Teacher.

1 Ответ

1 голос
/ 16 января 2020

Массивы однородны: существует один тип элемента, и все элементы массива относятся к одному и тому же типу. Невозможно иметь элементы нескольких типов в массиве.

Если классы связаны через наследование, то можно хранить указатели на подобъекты базового класса, которые могут быть основой различных производных типов.

Другой подход заключается в использовании тегового объединения в качестве типа элемента. std::variant - реализация тегового объединения, предоставляемая стандартной библиотекой. Такой тип использует технику «стирания типа» для хранения объекта из закрытого набора типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...