Это тебе не поможет. Вам все еще нужен файл addon.js.
Смотрите здесь: https://github.com/storybooks/storybook/issues/5249
Я думаю, вам нужно подождать.
https://github.com/storybooks/storybook/issues/5249#issuecomment-472179512
Необходимо использовать вектор объектов каждый раз, когда возможный; но в Вашем случае это не возможно.
Контейнеры указателей позволяют Вам избежать режущей проблемы. Но затем необходимо звонить, удаляют на каждом элементе, как Вы делают. Это является раздражающим, но возможным. К сожалению, существуют случаи (когда исключение выдается), где Вы не можете быть уверены, что удаляют, правильно назван, и Вы заканчиваете с утечкой памяти.
Основное решение состоит в том, чтобы использовать интеллектуальный указатель. ПредC++ 11 идет auto_ptr
, но это не может использоваться в стандартном контейнере. C++ 11 имеет std::unique_ptr
и std::shared_ptr
которые разработаны, чтобы быть применимыми в контейнерах (я предпочитаю std::unique_ptr
если мне действительно не нужен подсчет ссылок). Если Вы не можете использовать C++ 11, лучшим решением являются интеллектуальные указатели Повышения.
В этом случае, храня вектор Animal
не работал бы на Вас, поскольку у Ваших животных есть различные размеры, и Вы не смогли бы сохранить производные объекты в пробелах, предназначенных для содержания базового класса. (И даже если они будут тем же размером, то Вы не получите намеченный полиморфный эффект, поскольку методы базового класса будут выполняться - виртуальность метода не играет роли, если Вы не получаете доступ к нему через указатель или ссылку.)
Если Вы хотите избежать раздражения из-за управления памятью сами, Вы могли бы рассмотреть хранение интеллектуального указателя, такого как shared_ptr (обратите внимание, что auto_ptr не работает с контейнерами STL, по словам Max Lybbert), или некоторый вариант этого. Тем путем можно все еще использовать полиморфный класс, но это - немного меньше работы для Вас.
Нет никаких очень твердых и быстрых правил о том, когда использовать объекты и указатели, хотя стоит отметить, что в некоторых случаях, как Ваш, объекты просто не собираются работать на Вас. Я склонен использовать объекты каждый раз, когда ничто не устраняет его, хотя, хотя Вы действительно должны быть обеспокоены дорогими операциями копии, как Вы отмечаете (хотя иногда они могут быть улучшены передающими контейнерами ссылкой).
Вместо того, чтобы использовать shared_ptr со стандартными контейнерами STL, смотрите на Библиотеку Контейнера Указателя Повышения. Это разработано для решения точно этой проблемы.
Если Вы когда-нибудь слышите аргумент, но это будет настолько дорогостоящим для копирования их структуры все время, когда Вы захотите использовать полные объекты вместо указателей в векторе, то Ваши 2 основных аргумента:
Добавленная стоимость копирования обычно берется при добавлении материала к контейнеру, не, когда использование данных - думает немного об этом: что Вы делаете больше всего? добавить объекты или использовать их?
Однако при добавлении polymorphical объектов, указатели необходимы, чтобы не резать.