You need to use pointers, and you need to give your base class a virtual destructor. A destructor must not do anything, but it must exist. Your add function is as follows:
void add_item( Base * item ){
item->print();
items.push_back( item );
}
- vector<Base *>. ( ):
for( int i = 0; i < items.size(); i++ ) {
delete items[i];
}
items.clear();
anon