[Xfc-dev] Signal-handling-question
Johannes Zellner
webmaster at nebulon.de
Mon Aug 1 09:31:17 CEST 2005
Thanks this solved the Problem :-D
Btw: Which other apps are using the xfce-foundation-classes ?
Greets
Johannes
Jeff Franks schrieb:
>Johannes Zellner wrote:
>
>
>
>>Here is the compiler output:
>>
>>g++ filestepper.cc -c -o filestepper.o -Wall -O2 `pkg-config xfcui-4.3
>>--cflags`In file included from filestepper.cc:163:
>>/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h: In member
>>function `
>> typename sigc::adaptor_functor<T_functor>::deduce_result_type<T_arg1,
>>void,
>> void, void, void, void, void>::type
>> sigc::adaptor_functor<T_functor>::operator()(T_arg1) const [with T_arg1 =
>> const Xfc::Gdk::EventKey&, T_functor = sigc::bound_mem_functor1<bool,
>> FileStepper, Xfc::Gdk::EventCrossing&>]':
>>/usr/include/sigc++-2.0/sigc++/functors/slot.h:136: instantiated from
>>`static T_return sigc::internal::slot_call1<T_functor, T_return,
>>T_arg1>::call_it(sigc::internal::slot_rep*, typename
>>sigc::type_trait<T_arg3>::take) [with T_functor =
>>sigc::bound_mem_functor1<bool, FileStepper, Xfc::Gdk::EventCrossing&>,
>>T_return = bool, T_arg1 = const Xfc::Gdk::EventKey&]'
>>/usr/include/sigc++-2.0/sigc++/functors/slot.h:144: instantiated from
>>`static void*(* sigc::internal::slot_call1<T_functor, T_return,
>>T_arg1>::address())(void*) [with T_functor =
>>sigc::bound_mem_functor1<bool, FileStepper, Xfc::Gdk::EventCrossing&>,
>>T_return = bool, T_arg1 = const Xfc::Gdk::EventKey&]'
>>/opt/lunar/xfce4/include/xfce4/xfc/glib/signals.hh:529: instantiated
>>
>>
>>from here/usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:84:
>
>
>>
>>
>>
>>
>The next few lines report the relevant information
>
>
>
>>error: no match for
>> call to `(sigc::bound_mem_functor1<bool, FileStepper,
>> Xfc::Gdk::EventCrossing&>) (const Xfc::Gdk::EventKey&)'
>>/usr/include/sigc++-2.0/sigc++/functors/mem_fun.h:1839: error:
>>
>>
>>
>>
>Here the compiler is reporting that it can find 'no match' for your call
>to connect a function that takes a 'const Xfc::Gdk::EventKey&'.
>
>
>
>>candidates are:
>> T_return sigc::bound_mem_functor1<T_return, T_obj,
>> T_arg1>::operator()(typename sigc::type_trait<T_arg3>::take) const [with
>> T_return = bool, T_obj = FileStepper, T_arg1 = Xfc::Gdk::EventCrossing&]
>>make: *** [filestepper.o] Fehler 1
>>
>>
>>
>>
>Above the compiler is reporting that the candiate for the nearest match
>is your function that takes a non-const Xfc::Gdk::EventCrossing
>reference. Although the object type is wrong, it should be a
>Xfc::Gdk::EventKey object, it would still generate an error because the
>reference it is not declared const.
>
>
>
>>The depending codelines are:
>>
>>[...]
>> entry = new Gtk::Entry(0);
>> entry->signal_activate().connect(sigc::mem_fun(this,
>>&FileStepper::go)); <--works fine
>> entry->signal_key_release_event().connect(sigc::mem_fun(this,
>>&FileStepper::gofor)); <--- errorline
>>
>>
>>
>>
>So, the problem appears to be your function signature... it should be
>
>bool FileStepper::gofor(const Gdk::EventKey& event);
>
>not
>
>bool FileStepper::gofor(Gdk::EventCrossing& event);
>
>or
>
>bool FileStepper::gofor(Gdk::EventKey& event);
>
>
>
>> hbox->pack_start(*entry, true, true, 0);
>> entry->show();
>>[...]
>>void FileStepper::go(void)
>>[...]
>>bool FileStepper::gofor(Gdk::EventCrossing& event)
>>[...]
>>
>>thanks... Johannes
>>
>>Jeff Franks schrieb:
>>
>>
>>
>>
>>
>Hope this solves your problem,
>Jeff.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>_______________________________________________
>Xfc-dev mailing list
>Xfc-dev at xfce.org
>http://foo-projects.org/mailman/listinfo/xfc-dev
>
>
>
More information about the Xfc-dev
mailing list