2008/2/7 Matias Capeletto <[EMAIL PROTECTED]>:
>
> 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 ;)

y además cuando hay que armar el paquete de instalación y agregar
dependencias de bibliotecas me genera complicaciones :(

>  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.

ahí si, pero porque caigo en los brazos del estándar :p

Saludos

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a