Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/03/2007, 22:30
fightmx
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 3 meses
Puntos: 22
Re: Metodo de clase como parametro c++

Que tal serxoker.

Mira, para declarar un puntero a un miembro de la clase (en este caso al método fun) debes hacerlo de manera generica y no a través de un objeto de la clase. Puedes declarar un puntero que pueda apuntar al método fun como sigue:
Código:
void (MiClase::* pFun)(); //pFun es un puntero a una función miembro sin parámetros de la clase MiClase que retorna void
Si te fijas el declarar punteros a funciones miembro(no estáticas) de una clase
es muy similar a las declaraciones de puntero a función, salvo que en este caso tienes que agregar el operador de ámbito de la clase.

Luego la signación la haces de la siguiente manera:
Código:
void (MiClase::* pFun)() = &MiClase::fun;
Luego lo que sucede aquí es que no puedes invocar el método a traves del puntero asi nada mas porque si, sino que necesitas hacerlo a traves de un objeto de la clase, por lo que no tiene tanto sentido(según yo veo) que quieras pasar como único parametro este puntero a una función porque no tendrás un objeto a través del cual invocarlo.

En fin lo único que intento es dar una mini mini intro con esto de los punteros a miembros de clase para que le sigas investigando(hay mucha info en la red) y puedas resolver de la manera que creas mas conveniente el problema.

Aquí puedes ver como invocar a través del puntero:
Código:
#include <iostream>
using std::cout;

class MiClase{
      public:
             void fun(){ cout << "getchar()...";getchar(); }
};

/*void pausa(void (*fun)() ){
fun();
}*///

int main(){
    MiClase obj;
    void (MiClase::* pFun)() = &MiClase::fun;
    (obj.*pFun)(); // <--- a través del puntero
    return 0;

}
Salu2.