% xlC -qversion C for AIX version 6.0.0.0radhas@peibm116:/remote/us01home5/radhas/test_prog% cat boost_ptr_vec.cpp #include #include #include using namespace std; class animal : boost::noncopyable { public: virtual ~animal() {} virtual void eat() = 0; virtual int age() const = 0; // ... }; class mammal:public animal { public: string name; mammal(string set_name) { name=set_name; } void eat() { } int age() const { return 1; } }; class bird:public animal { public: string name; bird(string set_name) { name=set_name; } void eat() { } int age() const { return 1; } }; class zoo { boost::ptr_vector the_animals; public: void add_animal( animal* a ) { the_animals.push_back( a ); } }; int main() { zoo the_zoo; the_zoo.add_animal( new mammal("joe") ); the_zoo.add_animal( new bird("dodo") ); }