Как уже упоминалось, удаление класса BookList
и его замена на соответствующий typedef
, вероятно, является наилучшим вариантом, если у BookList
нет других обязанностей.Однако, если требуется BookList
, то некоторые опции для предоставления доступа к m_books
будут следующими:
- метод, который возвращает
vector< Book* > const &
- пару
begin
/ end
методы, которые возвращают полиморфные обертки итератора, такие как this или this
Первый вариант является самым простым, но предоставляет внутреннее расположение данных клиентам,Второй вариант позволит вам заменить базовый контейнер, не требуя каких-либо изменений для клиентов.Вам решать, какой из них наиболее подходит для вашего дизайна.
Кроме того, вы можете рассмотреть возможность замены vector< Book* >
на vector< Book >
, если Book
не будет полиморфным базовым классом.Если это так, то, вероятно, лучшим вариантом будет контейнер умных указателей.