You need to store pointer to the base class in your vector.
While you think you addedderived class objects to the vector, each element in the vector has only enough space for a Base class object. So, what actually gets stored in the vector is just the Base object part. The derived class contents merely get sliced off.
This phenomenon is popularly known as Object slicing in C++.
Also, instead of storing raw pointers in the vector, You should consider using smart pointers.