0

我需要g_idle_add()C++代码中使用,其中 aGSourceFunc是另一个类函数,并且还必须传递一些参数。只在 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 调用的函数的范围。我可以像上面在示例 C++ 代码中所做的那样调用 g_idle_add()

4

1 回答 1

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);
于 2013-08-12T11:47:52.913 回答