Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
如何以面向对象的方式编写GStreamer代码_Gstreamer - Fatal编程技术网

如何以面向对象的方式编写GStreamer代码

如何以面向对象的方式编写GStreamer代码,gstreamer,Gstreamer,我正在从事一个项目,其中启动了多条相同的管道。我们想用面向对象的方式来做 我们目前遇到的麻烦是,我们必须使回调函数在类中是静态的,因为gstreamer库是指向函数的指针。例如: gst_bus_add_watch(bus, GstBusFunc(busCall), data); 其中,必须在类中定义busCall,如下所示: static gboolean busCall(GstBus *bus, GstMessage *message, gpointer *data); 我们担心多个管道

我正在从事一个项目,其中启动了多条相同的管道。我们想用面向对象的方式来做

我们目前遇到的麻烦是,我们必须使回调函数在类中是静态的,因为gstreamer库是指向函数的指针。例如:

gst_bus_add_watch(bus, GstBusFunc(busCall), data);
其中,必须在类中定义busCall,如下所示:

static gboolean busCall(GstBus *bus, GstMessage *message, gpointer *data);
我们担心多个管道对象共享这个静态回调函数


以前有人试过这个吗?关于多管道实施有什么好的建议吗?

您关心什么?它是一个静态函数。您将无法在此函数中使用
this
,并且不受对象生存期的限制。只需将
this
指针作为
data
传递给静态成员,并在内部将其强制转换为类类型指针并调用所需的类成员。或者使用lambda(甚至是常规函数)。大概是这样的: