[C con Clase] "Punteros" a clase

Rafael Arias Michel rgam496 en gmail.com
Mar Oct 23 16:01:40 CEST 2012


A, B y C son tipos de datos, de hecho, son clases. pA puede representar a
cualquier clase que se generalice en la clase A, de modo que haciendo pA =
B, pA se comporta como una clase B, pero sólo usa los miembros y funciones
especificados en la clase A.

Daré un ejemplo comparando con punteros a funciones.

Tenemos las funciones:
double cuadrado(double x);
double tangente(double x);

Damos una nomenclatura para el puntero a función:
typedef double (*funcion_matematica)(double);

Si tenemos una función:
void graficar(funcion_matematica f);

Esta serie de instrucciones sería válida:
funcion_matematica f;
f = cuadrado;
graficar(f);
f = tangente;
graficar(f);


Vemos que f es un puntero a función, que me da la libertad de elegir qué
algoritmo usaré para calcular los valores a graficar.

Del mismo modo, quería diseñar pA de tal modo que me permita elegir qué
clase usar, siempre que sea A una generalización de esa clase.

Espero haber aclarado qué deseo realizar.

Saludos.

El 23 de octubre de 2012 03:22, User <usuarioanonimomysql en gmail.com>escribió:

> Hola,
>
> Cuando haces 'pA = B;' y 'pA = C;' ¿A y C son tipos o son variables? Si
> son variables lo que estás haciendo son asignaciones polimorfas y puede que
> el polimorfismo sea una solución para el objetivo que quieres alcanzar.
>
> No entiendo bien eso que pones de pA var; pA no es un tipo sino un puntero
> a A, ¿verdad?
>
> Un saludo.
>
> El 23 de octubre de 2012 07:07, Rafael Arias Michel <rgam496 en gmail.com>escribió:
>
>> Quiero profundizar mis conocimientos en C++, y se me ocurrió hacer con
>> clases algo que es de fácil aplicación con punteros a funciones. La idea es
>> la siguiente:
>>
>> Tengo tres clases: A, B y C, donde A es una generalización de las otras
>> dos. Si pA es un "puntero" a la clase A funcionaría así:
>> pA = B;
>> pA = C;
>> Según el caso que me convenga. De modo que pueda realizar una declaración
>> como:
>> pA var;
>> Que será de la clase B o de la clase C según la elección dada. La idea es
>> que pueda realizar instrucciones como:
>> pA = B;
>> pA var1; // Equivalente a B var1;
>> pA = C;
>> pA var2; // Equivalente a C var2;
>>
>> ¿Es viable en C++ algo similar? Soy consciente de que con punteros a
>> funciones y punteros genéricos podría emular esto sin inconvenientes, pero
>> deseaba probar si podía lograr algo más elegante, con clase.
>>
>> Agradezco sus respuestas.
>>
>> Cordiales saludos.
>>
>> Rafael Arias Michel
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20121023/492c537d/attachment.html>


Más información sobre la lista de distribución Cconclase