class Book {・・・}; class Novel : public Book{・・・}; class Comic : public Book{・・・};
typedef shared_ptr<Book> PBOOK;
class Shelf : public std::vector<PBOOK> {・・・}; Shelf g_shelf;
int main(void) { std::shared_ptr<Novel> n = make_shared<Novel>("Hoshio wo tugumono"); std::shared_ptr<Comic> c = make_shared<Comic>("Kimetsu no Yaiba"); g_shelf.push_back(n); g_shelf.push_back(c); }