C/Visual C - creando instancias de objetos al RUN-TIME

 
Vista:

creando instancias de objetos al RUN-TIME

Publicado por manuel (14 intervenciones) el 03/07/2006 10:15:17
hola.

como puedo crear una instancia de una clase PERO, AL RUN-TIME?

me explico.
tengo una clase base:
class base {};

y dos derivadas:
class d1 : public base {};
class d2 : public base {};

el tipo de objeto o el nombre de la clase lo tengo como un parametro:
char *className;
que puede ser:
className="d1" O
className="d2"

luego el proceso debe crear una instancia de acuerdo a 'className'.
si 'className'= "d1", crea una instancia de tipo d1
si 'className'= "d2", crea una instancia de tipo d2

detalle: NO deseo utilizar if, switch, etc.

quiero hacer ALGO como:

base *pbase= new className;

o si hay otra forma de hacerlo o algun link donde haya informacion.

gracias por anticipado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:creando instancias de objetos al RUN-TIME

Publicado por fernando.gomez (1603 intervenciones) el 03/07/2006 19:43:03
Hola. Es imposible eso que quieres hacer; inclusive con RTTI esto no se puede lograr. Lo más que puedes hacer es implementar el patrón de diseño de fábrica de clases (class factory), y evidentemente sería empleando

base* pbase;
if (!strcmp(className, "d1")) {
pbase = new d1;
} else if (!strcmp(className, "d2")) {
pbase = new d2;
}

De otra forma, no se puede.

Hay, sin embargo, una tecnología que pretende lograr algo parecido: le pasas a una función un identificador, y te regresa una instancia de la clase que quieres. Esta tecnología es el Component Object Model (hay una versión del OMG, llamada CORBA, pero ya no se utiliza). Sin embargo, a final de cuentas COM se basa en implementar el patrón de la fábrica de clases. Es algo engorroso, pero es lo más cercano que uno tiene a lo que quieres hacer.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:creando instancias de objetos al RUN-TIME

Publicado por manuel (14 intervenciones) el 03/07/2006 21:04:04
hola.
gracias por la "pista".
hice una busqueda "class factory" y realmente es lo que mencionas.
voy a implementar una "fabrica de clases" simple, por el momento, y a ver que da.
estaremos en contacto.
gracias
manuel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:creando instancias de objetos al RUN-TIME

Publicado por Nelek (816 intervenciones) el 05/07/2006 11:57:37
hola,

Este hilo me interesa bastante ya que yo tengo ahora un problema parecido (lo describo en un mensaje de hace una semana o asi), solo que yo no quiero instanciar clases, sino controles (botones, listbox...) dentro de un Dialog o una Ventana.

Si no te importa sigue posteando cosas al respecto conforme hagas pruebas y te salgan problemas o dudas, a ver si entre varios podemos hacer algo interesante y util para todos.

Si quieres que mantengamos un tiempo contacto a ver si nos podemos ayudar dimelo y si la cuenta de mail que pones en tu mensaje es real, te agregare al msn y asi podremos hablar tranquilamente y mucho mas rapido que a traves del foro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar