• Miércoles 20 de Noviembre de 2024, 18:33

Autor Tema:  Problema con puntero a función miembro  (Leído 1478 veces)

Demenus

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Problema con puntero a función miembro
« en: Sábado 10 de Abril de 2010, 05:51 »
0
Bueno, resulta que estoy intentando crear un array con una estructura que almacene un nombre y una "función"
En Python estoy acostumbrado a que todo se guarde como una dirección de memoria y quede muy bonito y muy sencillo, pero con C++ estoy teniendo problemas a la hora de intentar guardar una función miembro dentro del campo para funciones de la estructura.
(Perdón si no me expreso muy bien con los términos pero es que soy autodidacta y todavía no he llegado a distinguir esos matices del todo XDD
Bueno aquí les dejo el código que me tira el error en cuestión
Código: C++
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. class foo {
  5.     public:
  6.         foo();
  7.    
  8.         typedef struct {
  9.             string nombre;
  10.             void *funcion();
  11.         } lista_nombres;
  12.  
  13.         void function()
  14.         {
  15.             cout<<"hola mundo"<<endl;
  16.         }
  17.  
  18.         void function2()
  19.         {
  20.             cout<<"hola mundo 2"<<endl;
  21.         }
  22.  
  23.         lista_nombres list[2];
  24.  
  25. };
  26.  
  27. foo::foo()
  28. {
  29.     list[0].nombre="uno";
  30.     list[0].funcion=&function;
  31.     list[1].nombre="dos";
  32.     list[1].funcion=&function2;
  33.    
  34.     list[0].funcion();
  35.     list[1].funcion();
  36. }
  37.  
  38. int main()
  39. {
  40.     foo elemento();
  41. }
  42.  


El error que me tira es este:
Código: Text
  1. prueba.cpp: In constructor ‘foo::foo()’:
  2. prueba.cpp:32: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say ‘&foo::function’
  3. prueba.cpp:32: error: invalid use of member (did you forget the ‘&’ ?)
  4. prueba.cpp:34: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.  Say ‘&foo::function2’
  5. prueba.cpp:34: error: invalid use of member (did you forget the ‘&’ ?)
  6.  
  7.  
  8.  

He intentado seguir las sugerencias del compilador pero... sin resultados.
Muchas gracias de antemano

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema con puntero a función miembro
« Respuesta #1 en: Sábado 10 de Abril de 2010, 14:24 »
0
¿Usaste un miembro estatico como menciona ahi?

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Demenus

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Problema con puntero a función miembro
« Respuesta #2 en: Sábado 10 de Abril de 2010, 16:07 »
0
Sí lo usé, pero esto es una pruebita que estoy haciendo para un proyecto mayor, y el usar métodos estáticos me dificulta después el uso de miembros en el caso de instanciar varios objetos (o al menos eso creo, que podría haber cierto conflicto)
Aún así ya he resuelto mi duda utilizando un void (foo:: *funcion)(); en vez de void *funcion() como tenía.
Gracias de todas formas