如何从extern“C”函数访问类变量?

时间:2013-04-10 19:50:09

标签: c++ class variables extern

这是我的基本代码:

这是头文件:

/** Include the necessary things **/

Class MyClass{
    private:
        std::string mystring;
    /**
     * Declare constructor, methods, yada yada yada
     **/
};

这是源文件:

MyClass::MyClass(){
    mystring[0] = 0;
}

extern "C" MyClass::function(/* variables */){
    cerr << mystring << endl;
}

问题似乎是我在 cerr&lt;&lt;&lt;&lt; mystring&lt;&lt; ENDL; 行。 function()需要是一个extern“C”函数,因为它作为参数传递给本机C函数。

有什么想法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

使类成员extern "C"的用处有限,我建议避免使用这种将C ++方法暴露给C代码的方法。

你应该做的是创建一个包装函数,它将指向MyClass实例的指针作为附加参数,然后执行所需的调用:

extern "C" void MyClass_function(MyClass *obj, /* variables */) {
    obj->function(/* variables */);
}