動的な多態性を持った型のオブジェクトをコンテナで扱いたい場合、基本クラスの参照型または基本クラスのポインタ型のコンテナを使うことができます: #include <iostream> #include <memory> #include <vector> struct A { void disp() const { do_disp(); } private: virtual void do_disp() const = 0; }; class B : public A { void do_disp() const override { std::cout << "B\n"; } }; int main() { std::vector<std::shared_ptr<A>> v; v.emplace_back(std::make_shared<B>()); for (auto const& a