#include #include #include class tree { public: virtual void grow() = 0; }; class oak : public tree { public: void grow() { std::cout << "oak grows slowly" << std::endl; } }; class pine : public tree { public: virtual void grow() { std::cout << "pine grows quickly" << std::endl; } }; int main(int argc, char* argv[]) { std::list< boost::any > forest; forest.push_back(oak()); forest.push_back(pine()); for(std::list< boost::any >::iterator iter = forest.begin(); forest.end() != iter; ++iter) { iter->grow(); /* this dosen't work */ } return 0; }