Crear un vector de distintas clases

Arkantos
19 de Enero del 2009
Hola, tengo un problema que no se por donde coger, ya que tengo que hacer un vector, o algún tipo de almacen, en el que meter clases de diferentes tipos.
El problema es que tengo una clase abstracta de la que hereda otra clase que si define sus metodos. A mi me gustaria definir un vector del tipo de la clase abstracta por que hay varias clases que la implementan, es decir, que tengo:

class Animal{
public:
Animal();
~Animal();
virtual int Comer();
}

class Perro : public Animal{
public:
Perro();
~Perro();
int comer();
}
class Gato: public Animal{
public:
Gato();
~Gato();
int comer();
}

class Mascotas{
public:
almacen_de_clases_distintas;
int n_animales;
añadir_mascota(Animal a);
}

me gustaría saber que tipo debería tener "almacen_de_clases_distintas", ya que no me deja poner vector<Animal>, que es lo que me gustaría para poder tener a todas las mascotas en una sola estructura.
Gracias