Массив объектов базового класса, указывающий на экземпляр синтаксиса производного класса? - PullRequest
0 голосов
/ 12 апреля 2020

Если у меня есть базовый класс Book и я создаю массив указателей Book, как я могу динамически создать экземпляр Nonfiction или Fiction (оба производных класса) в моем указателе Book? Я добавил, что я пытаюсь сделать, но не уверен, каков правильный синтаксис для чего-то подобного.

   Book* v;
   v = new Book[10]
   v[2] = new Fiction

Ответы [ 2 ]

3 голосов
/ 12 апреля 2020

Вы не создаете массив из Book указателей, вы создаете массив из 10 Book объектов. Чтобы создать массив указателей, вы хотите

Book **v = new Book*[10];
v[2] = new Fiction;
1 голос
/ 12 апреля 2020

Firstable, в c ++, я рекомендую максимально использовать умные указатели. Также мне нравятся векторы STL.

В вашем случае я бы сделал что-то подобное:

       std::vector<std::shared_ptr<Book>> books(10, nullptr);
       books[2] = std::make_shared<Fiction>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...