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.