[eside-ghost] Error raro al compilar..
Iker Perez de Albeniz - Txupete -
txupete en gmail.com
Lun Sep 24 11:02:49 CEST 2007
ammmmmmmmm me habia parecido entenderle eso a Alfredo pero he
pensado.. "no puede ser!! como puede ser que solo pueda hacer llamadas
a funciones sin pasar paramnetros..!!"
asi que hechare un vistazo a eso de "group_mem_fun"
gracias por la explicacion!
El 24/09/07, Jon Ander Ortiz <jonbaine en gmail.com> escribió:
> Buenas:
>
> Lo que acabas de mandar esta bien... pero lo de antes no (de echo alfredo te
> dice la manera correcta de hacerlo...), me explico...
> C++ hace un tratamiento un tanto especial para los punteros a función, que
> funcionan de manera bastante diferente a los de C, en caso de que sean
> funciones estáticas (o forzando el linkado al modo "C", con la directiva
> extern "C" ) o funciones normales asociadas a una clase.
> Un puntero a función en C++, define la dirección dentro de un objeto del
> tipo al que pertenece, no es un ente "completo", por ello tienes que pasar
> el objeto sobre el que vas a ejecutar la acción (el *this que pones en todas
> las funciones es pasa eso), y no puedes pasar cuando estas pasando un
> puntero a función argumentos de la función que luego quieras ejecutar, ese
> es el error que cometes.
>
> En esta línea:
>
> ms_HSspeed.signal_value_changed ().connect(sigc::mem_fun(*this,
> &configWindow::setSliderValue(1)));
>
> Estás metiendo valores concretos en el puntero a función: setSliderValue
> (1) Ese uno sobra !!! ;), es decir, que estas pasandole los argumentos en
> el puntero a función, cosa que no se puede hacer -->
> ms_HSspeed.signal_value_changed ().connect(sigc::mem_fun(*this,
>
> &configWindow::setSliderValue)); si el setSliderValue
> necesita argumentos echale un vistazo a como gestiona las llamadas en
> http://libsigc.sourceforge.net/libsigc2/docs/reference/html/group__mem__fun.html,
> que permite pasar punteros a función con varios paramentos, o sino haz lo
> que te ha pasado alfredo, haz una función que no tenga parametros y que haga
> lo que necesites.
>
> Ala y a compilar!!! XD y ojito con los punteros a funcion en C++ que son un
> tanto raritos XD
> Un saludete:
> Jonan
>
>
> El día 24/09/07, Iker Perez de Albeniz - Txupete - <txupete en gmail.com>
> escribió:
> >
> > >
> > > Se refiere a lo que estás poniendo ahí arriba, que está mal. No puedes
> pasar
> > > como parámetro la dirección de una llamada a un método. No sé si tienes
> algún
> > > otro error porque hace lustros (bueno, al menos 1) que no hago nada en
> GTK+,
> >
> > en principio esa es la forma de conectar los botones a una accion...
> > lo tengo hecho asi en mas sitios y me funciona perfectamente, por
> > ejemplo:
> >
> >
> >
> m_EVclose.signal_button_press_event().connect(sigc::mem_fun(*this,
> > &configWindow::closeWindow));
> >
> m_EVclose.signal_enter_notify_event().connect(sigc::mem_fun(*this,
> > &configWindow::closeImageIn));
> > m_EVclose.signal_leave_notify_event
> ().connect(sigc::mem_fun(*this,
> > &configWindow::closeImageOut));
> > ..
> > .
> > ..
> > ..
> > .
> > bool configWindow::closeWindow(GdkEventButton*)
> > {
> > hide(); //Closes the main window to stop the Gtk::Main::run().
> > return true;
> > }
> >
> > bool configWindow::closeImageIn(GdkEventCrossing*)
> > {
> > m_Iclose.set("./skin/cerrar-s.png");
> > return true;
> > }
> >
> > bool configWindow::closeImageOut(GdkEventCrossing*)
> > {
> >
> > m_Iclose.set("./skin/cerrar.png");
> > return true;
> > }
> > _______________________________________________
> > eside-ghost mailing list
> > eside-ghost en deusto.es
> > https://listas.deusto.es/mailman/listinfo/eside-ghost
> >
>
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
Más información sobre la lista de distribución eside-ghost