B
Erst einmal vielen Dank für die Antwort.
Ich habe mir das Tutorial durchgelesen und stoße auf folgendes Problem:
Wenn ich mich an Kapitel 2 Seite 3 halte, bekomme ich folgende Compiler Meldung
C:\GTK\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 MyWindow&, T\_functor = sigc::pointer\_functor1<MyWindow*, void>]':| C:\\GTK\\include\\sigc++-2.0\\sigc++\\functors\\slot.h|136|instantiated fromstatic 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::pointer_functor1<MyWindow*, void>, T_return = void, T_arg1 = MyWindow]'|
C:\GTK\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::pointer\_functor1<MyWindow*, void>, T\_return = void, T\_arg1 = MyWindow]'| C:\\GTK\\include\\sigc++-2.0\\sigc++\\functors\\slot.h|529|instantiated fromsigc::slot1<T_return, T_arg1>::slot1(const T_functor&) [with T_functor = sigc::pointer_functor1<MyWindow*, void>, T_return = void, T_arg1 = MyWindow]'|
C:\GTK\include\sigc++-2.0\sigc++\functors\slot.h|1157|instantiated from sigc::slot<T\_return, T\_arg1, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot(const T\_functor&) [with T\_functor = sigc::pointer\_functor1<MyWindow*, void>, T\_return = void, T_arg1 = MyWindow]'| C:\\Dokumente und Einstellungen\\User\\Eigene Dateien\\Develop\\RS232\\RS232.cpp|68|instantiated from here| C:\\GTK\\include\\sigc++-2.0\\sigc++\\adaptors\\adaptor\_trait.h|84|error: no match for call to(sigc::pointer_functor1<MyWindow*, void>) (const MyWindow&)'|
C:\GTK\include\sigc++-2.0\sigc++\functors\ptr_fun.h|111|note: candidates are: T_return sigc::pointer_functor1<T_arg1, T_return>::operator()(typename sigc::type_trait<T_type>::take) const [with T_arg1 = MyWindow*, T_return = void]|
C:\GTK\include\sigc++-2.0\sigc++\adaptors\adaptor_trait.h|84|error: return-statement with a value, in function returning 'void'|
||=== Build finished: 2 errors, 0 warnings ===|
Hier der Quellcode dazu:
[cpp]sigc::slot <void,MyWindow> sl = sigc::ptr_fun(RS232Lesen);[/cpp]
Ich habe mich auch damit beschäftigt: http://libsigc.sourceforge.net/libsigc2/docs/reference/html/group__ptr__fun.html
Demnach habe ich die aufrufende Zeile geändert zu:
[cpp]sigc::slot <void,MyWindow> sl = sigc::ptr_fun(RS232Lesen(this));[/cpp]
Und die Fehlermeldung besteht nur noch aus:
error: invalid use of void expression
Habe ich - für das erste Problem - Fehler in der Compiler Einstellung?
Ist die zweite Variante doch die richtige, aber was bedeutet die Fehlermeldung in diesem Fall? Immerhin soll ja nach Aufrufen der Funktion RS232Lesen, dieser auch noch MyWindow bekannt sein.