2008/2/7 personaje <[EMAIL PROTECTED]>:
> 2008/2/7 Matias Capeletto <[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 :)
> >
> > Para este tipo de cosas lo mejor es utilizar Boost. ( www.boost.org )
>
> Jaja... boost::procelitismo
:)
> Gracias matias, pero es overkill incorporar boost sólo para esta
> funcionalidad...
Seh, es overkill si tenes que instalarlo para esto... pero una vez que
esta instalado lo terminarías usando para muchas más cosas ;)
Igual, estas dos librerías (Bind y Function) parece que van a estar en
el próximo estandar, así que en algún futuro quizás las terminas
usando igual.
Abrazos,
Mat
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion