I have three classes derived from an abstract base class, and I want a single vector to hold objects of each of the three derived classes. Is it possible to do this?
Zhuge is right: you can't use direct copies of your base class.
But beware that using the second version will result in an awkward syntax. You will write things like this a lot: "(*iter)->". To fix this, look at boost (www.boost.org). It has very nice libraries for vectors of pointer. look at ptr_vector. It's worth the effort.