Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+;中使用g#u idle#u add()时出错+;,同样的事情在C中也适用_C_Gstreamer_Glib_Gobject - Fatal编程技术网

在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
),它将包含所有需要的数据。