【发布时间】:2014-07-20 19:07:39
【问题描述】:
我正在将 C 库用于 C++ 项目。这个库允许我注册一个 C 回调,在这个回调中我应该调用一个对象的 C++ 方法。
情况是这样的:
myclass.h
class myclass
{
public:
myclass();
void callme();
};
extern "C"
{
void init():
int callback(int,int);
}
myclass.cpp
myclass::myclass()
{
init();
}
void myclass::callme()
{
cout<<"Ok\n";
}
extern "C"
{
void init()
{
//code
setlibraryCallback(callback);
//code
}
int callback(/*some arguments that I can't change*/ int a, int b)
{
//I should call "callme()" methos of my c++ object
}
}
我可以从这个 C 回调中调用 C++ 方法吗?如果是,我该怎么办? 谢谢
编辑: 我发现了这个类似的问题 How to call a C++ method from C? 但是我不能将对象作为 void 指针传递给 C 回调,因为我无法更改回调参数。
【问题讨论】:
-
您需要在帖子中包含一个实际问题。就目前而言,我们不知道您需要和/或想要什么。
-
"我可以从这个 C 回调中调用 C++ 方法吗?" ——你尝试的时候发生了什么? “如果是,我该怎么办?” -- 什么,你不知道怎么调用函数?
-
我无法调用“callme()”函数,因为外部代码不在类中,如果我尝试调用 callme(),则会出错。
-
那么为什么不获取 C++ 类的实例并从该对象调用
callme呢?您在源代码中的 cmets 暗示使用了一个 object,但您并没有引用一个。 -
您可以使用singleton,但这意味着只能有一个
myclass实例获得回调。