2008/2/7 Mauro Ciancio <[EMAIL PROTECTED]>:
> 2008/2/7 personaje <[EMAIL PROTECTED]>:
>
>
> > 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
>
> Para poder pasarle un método necesitas pasarle un puntero a método,
> no un puntero a función. Y ademas, cuando invoques ese método, necesitas
> un objeto sobre el cuál ejecutarlo.
>
> Podes verlo en ésta página:
>
> http://www.forosdelweb.com/f96/metodo-clase-como-parametro-c-474946/
joya, requirió un cast (por un tema de clases derivadas) pero funcionó...
Saludos
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion