在C+;中使用g#u idle#u add()时出错+;,同样的事情在C中也适用
我需要在在C+;中使用g#u idle#u add()时出错+;,同样的事情在C中也适用,c,gstreamer,glib,gobject,C,Gstreamer,Glib,Gobject,我需要在C++代码中使用g\u idle\u add(),其中GSourceFunc是另一个类函数,还必须传递一些参数。只在C代码中见过它的用法。所以可能是我没有把事情做好 在C代码中使用g\u idle\u add()是很简单的 C程序 g_idle_add((GSourceFunc)函数,someData) 其中functionA是在该C程序文件范围中定义的函数,someData是结构 C++程序 g_idle_add((GSourceFunc)(mObjOfAnotherClass->fu
C++
代码中使用g\u idle\u add()
,其中GSourceFunc
是另一个类函数,还必须传递一些参数。只在C代码中见过它的用法。所以可能是我没有把事情做好
在C代码中使用g\u idle\u add()
是很简单的
C程序
g_idle_add((GSourceFunc)函数,someData)
其中functionA是在该C程序文件范围中定义的函数,someData是结构
C++程序
g_idle_add((GSourceFunc)(mObjOfAnotherClass->functionB(*
p_(变量),NULL)
还考虑一个场景,在这里我必须将多个参数传递给函数B
这里的区别在于从g_idle_add调用的函数的范围。我可以调用GyIDLIOUD AUDE(),就像上面在示例C++代码< /p> < P>中所做的那样,函数指针与类方法指针不同。如果要使用指向方法的指针,则必须具有类的对象。您应该将方法包装在C函数中。例如:
extern "C"
{
void myCFunction(void *p_SomeVariable)
{
// store your object where you want
static AnotherClass mObjOfAnotherClass;
mObjOfAnotherClass.functionB(*p_SomeVariable);
}
}
然后:
g_idle_add ((GSourceFunc) myCFunction, p_SomeVariable);
谢谢,如果我必须在function中传递多个参数该怎么办?在这种情况下,您应该将一个结构传递给
functionB
(也传递给myCFunction
),它将包含所有需要的数据。