C++ で多態(polymorphism)を実現する方法はたくさんある。 昔は継承で実現するのが一般的だったが、最近は 委譲が推奨されている。そこで、以下のコードを書いてみた。 おそらくその筋の人からみれば当たり前だと思うけど。 #include <iostream> class Dog { public: void bark () { std::cout << "ワンワン" << std::endl; } }; class Cat { public: void bark () { std::cout << "にゃー" << std::endl; } }; class AbstractAnimal { public: virtual void bark () = 0; }; template <typename T> class Animal: public AbstractAnimal