Dev - C++ - Ayuda con punteros a funciones miembro

   
Vista:

Ayuda con punteros a funciones miembro

Publicado por Saúl Heredia (1 intervención) el 14/03/2010 05:45:07
Tengo el siguiente código en el cual declaro una clase cA que contiene tres funciones miembro void sin parametros a las cuales puedo llamar sin problema con el operador flecha desde el objeto a, pero lo que pretendo es acceder a esas mismas funciones por medio de la función ejecutar y para ello paso como parametros un puntero a objeto de tipo cA y un puntero a función miembro de cA tipo void sin parametros, anque parezca ocioso pretendo aplicarlo a cosas más complejas, lo que necesito es que las líneas del código comentadas con 2 hagan exactamente lo mismo que las lineas comentadas con 1, en teoría debe funcionar pero no es así, el compilador me indica un unico error "func no es miembro de cA", pero func en la funcion hace referencia a una funcion que si es miembro de cA, por lo tanto no encuentro el error, ayudenme por favor

#include <cstdlib>
#include <iostream>

using namespace std;

class cA
{
int mA;
public:
cA(int a){mA = a;}
void mostrar(){cout<<"Mostrando ... mA = "<<mA<<endl;}
void desplegar(){cout<<"Desplegando ... mA = "<<mA<<endl;}
void imprimir(){cout<<"Imprimiendo ... mA = "<<mA<<endl;}
};

void ejecutar(cA* a, void(cA::* func)()){a -> func();}

int main(int argc, char *argv[])
{
cA* a = new cA(10);

a -> mostrar(); //1
a -> desplegar(); //1
a -> imprimir(); //1

ejecutar(a, &cA::mostrar); //2
ejecutar(a, &cA::desplegar); //2
ejecutar(a, &cA::imprimir); //2

system("PAUSE");

delete a;

return EXIT_SUCCESS;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder