我需要在g_idle_add()
代码中使用C++
,其中GSourceFunc
是另一个类函数,并且还必须传递一些参数。已经看到它仅在C代码中使用。所以我可能没有把事情做对
在C代码中使用g_idle_add()
是直截了当的
C程序
g_idle_add((GSourceFunc)functionA,someData);
其中 functionA 是在该C程序文件范围中定义的函数,而 someData 是一个结构
C ++程序
g_idle_add((GSourceFunc)(mObjOfAnotherClass-> functionB(* p_SomeVariable)),NULL)
另外,考虑我必须向functionB
传递多个参数的场景这里的区别是关于从g_idle_add调用的函数的范围。我可以调用g_idle_add(),就像我在上面的示例C ++代码
中所做的那样答案 0 :(得分:2)
指向函数的指针与指向类方法的指针不同。如果要使用指向方法的指针,则必须具有该类的对象。您应该将方法包装在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);