Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Un Problemilla

Iniciado por shephiroth, 29 de Julio de 2005, 12:47:24 AM

« anterior - próximo »

shephiroth

 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!!!

_Grey

 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!

Pogacha_Reserva

 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

shephiroth

 Okas, muchas gracias, puse el std::vector y ahora funciona perfectamente el virtual.

Muchas gracias ^^







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.