Buenas.
Con un post reciente me replantee algunas cosillas, y me ha surgido este problema. Hasta ahora utilizaba std::vector con clases unicas por lo q no tenia problema. Actualmente se me ha complicado la cosa. Tengo algo como esto (abreviando):
class a{public:virtual void draw(){}};
class a1:public a{void draw{}};
std::vector <a> listado:
a *dos = new a1();
listado.push_back(*dos);
((a)listado[0]).draw();
dos->draw();
La primera llamada (usando std::vector) omite la funcion virtual, ejecuta a::draw.....mientras q dos->draw ejecuta lo q quiero, a1::draw
Alguien sabría como utilizarlo???
Si no se puede, en a::draw podría hacer un switch, cast y llamar a draw, pero ademas de q sería llenar el codigo de defines y un largo switch, enlentecería el código.....se puede decir que en cada bucle del programa pasaría unas cuantas veces por eso (demomento llevo 2, pero se puede extender hasta 10 segun avance con el programa ^^;)
GRACIAS!!!
Vale puede no haya tocado mucho las STL pero si te salta al draw() de a es por el "(a)".
Acaso no puedes hacer un listado[0].draw(); ?!
Por que no me extrañaria que no................bueno un poco, veras, lo que no me cuadra es el:
std::vector
listado;
Yo usaria un :
std::vector <*a> listado:^
Que parece que lo deja mas claro, en fin, si no que pase el experto.....
Saludos!
Si eso esta mal, al poner en el vector una cosa muy probablemente estará copiandola literalmente tal vez con memcpy, usa punteros como _Grey dice que se facilitará la vida.
Saludos