在我的C++程序中,我需要调用这个c API:
GConn* gnet_conn_new (const gchar *hostname,
gint port,
GConnFunc func);
Run Code Online (Sandbox Code Playgroud)
其中GConnFunc定义为:
void (*GConnFunc) (GConn *conn);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我有一个C++类,并有一个成员函数,如:
Class A {
public:
A();
void my_func (GConn* conn);
}
Run Code Online (Sandbox Code Playgroud)
在我的A::A()
构造函数,我怎么能传递this->myfunc
到gnet_conn_new
作为GConnFunc
参数?
谢谢.
Ash*_*ain 13
大多数API提供指针大小的"用户数据"参数,如下所示:
GConn* gnet_conn_new (const gchar *hostname,
gint port,
GConnFunc func,
void* user_data);
Run Code Online (Sandbox Code Playgroud)
这将允许您在user_data中传递一个实例,并将您的C函数转发给成员函数,如下所示:
void my_func(GConn *conn, void* user_data)
{
((MyClass*)user_data)->MyMemberFunc(conn);
}
Run Code Online (Sandbox Code Playgroud)
也许您的API在某处具有替代或类似的"用户数据"参数.否则,如果没有全局或静态,你就无法真正做到这一点.
归档时间: |
|
查看次数: |
2469 次 |
最近记录: |