// cat.cpp #include #include #include "cat.hpp" using boost::openmethod::virtual_ptr; namespace felines { BOOST_OPENMETHOD_CLASSES(animals::Animal, Cat, Cheetah); BOOST_OPENMETHOD_OVERRIDE( poke, (std::ostream & os, virtual_ptr cat), void) { os << cat->name << " hisses"; } BOOST_OPENMETHOD_OVERRIDE( poke, (std::ostream & os, virtual_ptr cat), void) { BOOST_OPENMETHOD_OVERRIDER( poke, (std::ostream & os, virtual_ptr dog), void)::fn(os, cat); os << " and runs away"; } } // namespace felines