Re: Timer start registration breaks the gtk_main()
- From: Chris Vine <chris cvine freeserve co uk>
- To: ikorot earthlink net
- Cc: gtk-list gnome org
- Subject: Re: Timer start registration breaks the gtk_main()
- Date: Sun, 27 Mar 2011 10:54:18 +0100
On Sat, 26 Mar 2011 20:27:04 -0700 (GMT-07:00)
ikorot earthlink net wrote:
> >Yes, ReadData() is a non-static class member function. Illegal casts
> >to avoid compilation failure has, as you can tell, not saved you
> >here.
>
> So in order to fix it, I need to use 'static' in front of 'void
> ReadData()'?
You should most properly use a plain function with C linkage as the
callback. If you want to access instance (non-static) data you need to
pass in an instance pointer; and if it needs to access private data it
should be made a friend.
Basically what you want is something like this:
// *** header file ***
extern "C" gboolean cframe_read_data(void* data);
class CFrame {
...
public:
...
gboolean ReadData();
};
// *** implementation file ***
gboolean cframe_read_data(void* data) {
return static_cast<CFrame*>(data)->ReadData();
}
int main() {
...
CFrame* cf = new CFrame;
g_timer_add_seconds( 1, cframe_read_data, cf);
...
}
This is all very basic C/C++
Chris
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]