Entrar
¿Usuario nuevo? Regístrate
war_3d · War 3D
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Dale update al CVC, sonidos y modelos.   Lista de mensajes  
Responder | Reenviar Mensaje #112 de 894 |
Re: RE: Dale update al CVC, sonidos y modelos.

Zeru:
Como estas?. Espero que bien.
Este es mi primer post en la lista, y queria aprovechar para dar mi
granito de arena sobre el problema de C++

Zeru, no puedes crear arreglos ni vectores de objetos Abstractos porque
la implementacion de vectores de STL trata de crear los objetos usando como
template la clase oSoldado, que es abstracta y por lo tanto carece de
implementacion. (en algun o en todos los metodos)
Tienes 2 opciones a mi parecer, la primera es crear un vector de
*punteros* a objetos oSoldado (o sus derivados) y la otra es asignar un
constructor diferente cuando inicializes el vector (usando el ultimo
parametro del metodo y no... nunca lo he hecho)

En cuanto a al overriding de funciones falto un punto muy importante
David.

El caso que mostraste con tu ejemplo es valido solo si las funciones
*NO* son declaradas como virtuales en tus clases. En caso contrario:

<CODIGO>
<Soldado.h>
...
class oSoldado
{
//Miembros privados, constructores, etc.
....
//Metodos
virtual void animacion() { cout << "oSoldado::animacion()\n"; }
};

class oSoldadoInfanteria : public oSoldado
{
//Miembros privados, constructores, etc.
....
//Metodos
virtual void animacion() { cout <<
"oSoldadoInfanteria::animacion()\n"; }
};
...
<main.cxx>
...
oSoldadoInfanteria *objeto;

oSoldado *soldado1;
oSoldadoInfanteria *soldado2;

//objeto = new oSoldado;
objeto = new oSoldadoInfanteria ; // <--- si no vamos a crear el objeto
derivado entonces no vale la pena el experimento


soldado1 = objeto;
soldado2 = objeto;

// Esto llamará a oSoldadoInfanteria::animacion()
soldado1->animacion();

// Esto tambien llamará a oSoldadoInfanteria::animacion()
soldado2->animacion();
...
</CODIGO>

Precisamente esa es la funcion de la palabra clave "virtual". Espero
esta aclaracion ayude, y saludos a la lista. :)

PD: Se aceptan cordialmente criticas y comentarios.





Jue, 5 de Dic, 2002 5:13 pm

marginalito
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #112 de 894 |
Desplegar mensajes Autor Ordenar por fecha

He modificado algunas cosas. La mayoria son estructurales, he intentado crear un objeto separado para cada una de las diferentes unidades. Pero al parecer no...
Zeru Giran
zerugiran@...
Enviar mensaje
5 de Dic, 2002
6:57 am

... Hola: aún no he visto el código fuente ya que ahora mismo estoy en el trabajo. A ver si te puedo dar alguna pista. Si tienes una clase base llamada...
David Díaz
dr_picu2
Sin conexión Enviar mensaje
5 de Dic, 2002
10:18 am

Ok, creo que entiendo. Tienes razon. El problema es que tengo un <vector> en donde he guardado varios objetos, todos derivan de oSoldados, por tanto el vector...
Zeru Giran
zerugiran@...
Enviar mensaje
5 de Dic, 2002
9:31 pm

Hola de nuevo: Re hola, acabo de leer el mail de Javier: Valla, no sabia por que no me dejaba crear un Vector a partir de una clase abstracta, jeje. Guano...
Zeru Giran
zerugiran@...
Enviar mensaje
5 de Dic, 2002
10:02 pm

Como no Zeru, tratare de explicarme aunque no estoy mu ducho en la materia. Cuando un crea un vector con STL normalmente hacemos: vector<int> V; ...
marginalito
Sin conexión Enviar mensaje
6 de Dic, 2002
6:36 am

Zeru: Como estas?. Espero que bien. Este es mi primer post en la lista, y queria aprovechar para dar mi granito de arena sobre el problema de C++ Zeru, no...
Javier Munoz
marginalito
Sin conexión Enviar mensaje
5 de Dic, 2002
5:13 pm

... Hmmm, sí... faltó :) El caso es que en el trabajo no podía hacer pruebas y todo eso lo tengo un poco olvidado. Tu explicación es magistral ;) ... ...
David Díaz
dr_picu2
Sin conexión Enviar mensaje
6 de Dic, 2002
12:06 am

David y Zerugiran: Ciertamente si crean un vector con punteros en vez de objetos tendran que hacer la creacion y limpieza explicitamente (de otro modo como STL...
Javier Munoz
marginalito
Sin conexión Enviar mensaje
6 de Dic, 2002
6:15 am
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda