Hola programadores amigos...
tengo una clase así:
-------------8<-------------8<-------------8<-------------8<-------------8<-------------
class A
{
public:
typedef void(*TipoFuncion)();
void Registrar(TipoFuncion func){m_func = func;}
void Correr(){m_func();}
private:
TipoFuncion m_func;
};
class B
{
public:
void B(std::string Nombre):m_nombre(Nombre){}
void FuncionCopada(){std::cout<<m_nombre<<std::endl;}
void FuncionNoCopada(){std::cout<<"No hay nada que ver en
"<<m_nombre<<std::endl;}
private:
std::string m_nombre;
};
int main()
{
A a;
B b1("b1");
B b2("b2");
a.Registrar(B::FuncionCopada);
a.Correr();
a.Registrar(B::FuncionNoCopada);
a.Correr();
}
-------------8<-------------8<-------------8<-------------8<-------------8<-------------
Algo así, y la corrida debería dar:
b1
No hay nada que ver en b2
Este código me tira :
test.cpp: In function 'int main()':
test.cpp:32: error: invalid use of non-static member function 'void
B::FuncionCopada()'
test.cpp:34: error: invalid use of non-static member function 'void
B::FuncionNoCopada()'
Pero si las paso a estáticas, no tengo acceso a los miembros.
Cómo se puede lograr algo así? en particular tratando de no usar templates :)
Saludos
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion