Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

punteros a funciones?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: punteros a funciones? Responder citando

Hola a todos

tengo una duda sobre lo que son los punteros a funciones y en que casos existiría una utilidad de estas, si existe algún lugar donde encontar información, me gustaría saber donde encontarla.

Otra de las cosas que no entiendo es que significa esta asignación

TCustomEdit *edit = dynamic_cast<TCustomEdit*>(ActiveControl);

si me pueden explicar del signo = a la derecha se los agradecería mucho.

eso es todo... Confused
_________________
__CMVM
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola Claudio:

dynamic_cast es uno de los operadores de casting/moldeado de C++, aunque supongo que bastante gente lo desconoce ya que no formaba parte del estándar hace unos años y por tanto no aparece en ningún libro que no sea actual.

Y no es el único, además del dynamic_cast tenemos reinterpret_cast, const_cast y static_cast.


- Empezamos por el que tiene una equivalencia mas directa con C, reinterpret_cast, y que hace un moldeado "por la fuerza". Por ejemplo:

  En C: tipo_variable1 variable1 = (tipo_variable1) variable2;
En C++: tipo_variable1 variable1 = reinterpret_cast<tipo_variable1> variable2;


- static_cast, hace un moldeado entre tipos similares. Por ejemplo:

    float f = 25.5;
    int i = static_cast<int>(f);
o
    void *p = Form1;
    TForm *pForm = static_cast<TForm*>(p);


- const_cast, "quita" por ejemplo la declaración const de un objeto:

    const TLabel *objeto_constante;

    // Esto nos daría error
    TLabel *objeto_no_constante = objeto_constante;

    // Esta es la forma correcta
    TLabel *objeto_no_constante = const_cast<TLabel*>(objeto_constante);


- Y por ultimo, dynamic_cast que nos permite el moldeado entre clases similares, ya sea porque derivan de una misma base o porque coinciden con el tipo buscado. Se resuelve en tiempo de ejecución y si no puede hacer el modelado devuelve 0:

    TObject *Sender = new TEdit(this);
    TCustomEdit *Edit = dynamic_cast<TCustomEdit*>(Sender);
    // Modelado correcto, *Edit contendria un puntero al objeto
    // ya que *Sender apunta a un objeto descendiente de TCustomEdit

    TObject *Sender = new TEdit(this);
    TLabel *Label = dynamic_cast<TLabel*>(Sender);
    // Modelado incorrecto, *Label contendria un puntero nulo (0)
    // ya que *Sender apunta a un objeto que no tiene relacion con TLabel


No es la manera más "científica" Wink de explicarlo, pero espero que se entienda algo.

Saludos:
_Leo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Siendo no puntuales... Responder citando

Hola,
La verdad no sé si te sirva....
Bueno no tengo una respuesta clara a tu pregunta, sin embargo puedo darte unas claves...

Busca en la yuda las funciones GetProcAddress, LoadLibrary y typedef.
Obviamente que estén en un solo archivo de implementación de C++.
Puede que te sirva....

Espera a que te suministre una ayuda luego de que llegue a la ciudad...

Suerte...
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.