我有一个看起来像下面的结构
struct dc_callback
{
int
my_configure_event(
GtkWidget *widget,
GdkEventConfigure *event,
struct LoadData *myData)
{
...others
return TRUE;
}
//Parametrized Constructor
int
my_draw(
GtkWidget *widget,
cairo_t *cr,
struct LoadData *myData)
{
...others
return TRUE;
}
};
它有两个参数化的成员函数,我打算在g_signal_connect
第n次调用。
main(){
int i;
dc_callback dc_callback_instance[nth];
for(i=0;i<nth;i++){
g_signal_connect(widget_list[i],"draw",G_CALLBACK(dc_callback_instance[i].my_draw),myData);
g_signal_connect(widget_list[i],"configure-event",G_CALLBACK(dc_callback_instance[i].my_configure_event),myData);
}
}
但是,在编译期间,我收到有关成员函数无效使用的错误int dc_callback::my_draw(args)
。它要求我添加,()
但是不能完成,因为G_CALLBACK接受没有附加参数的函数名。
我该如何完成?
@ 0x5453的答案是正确的,除了my_draw_cbk及其调用:它应该是
gboolean my_draw_cbk ( GtkWidget *widget,
cairo_t *cr,
struct CallbackData *cbData)
{
cbData->dc_callback_inst.my_draw(widget, cr, cbData->otherData);
return TRUE;
}
并连接信号:
// cbData shall be free with g_free when no longer needed
CallbackData* cbData = g_new(CallbackData, 1);
// set the cbData values..
g_signal_connect(widget_list[i],"draw",G_CALLBACK(my_draw_cb),cbData);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句