如何从外部"C"函数访问类变量?
How do I access a class variable from an extern "C" function?
我的基本代码:
头文件:
/** 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 <<mystring & lt; & lt;endl;。function()需要是外部"C"函数,因为它是作为参数传递给本机C函数的。
任何想法?
创建类成员extern "C"
的作用有限,我建议避免使用这种将c++方法暴露给C代码的方法。
您应该做的是创建一个包装器函数,该函数将指向MyClass
实例的指针作为附加参数,并执行所需的调用:
extern "C" void MyClass_function(MyClass *obj, /* variables */) {
obj->function(/* variables */);
}
相关文章:
- 访问类成员而不复制此变量或互斥变量
- 分段 访问私有类变量时出错
- 如何访问基类向量中的子类变量?(对于实体组件系统)
- 访问类对象以与全局变量进行比较
- 如何在构造函数中访问类变量以分配它们,而无需在C++中使用此指针
- 访问类成员的成员变量时 cpp 程序挂起
- 类变量无法从类方法访问
- 从静态成员函数访问私有非静态类变量 - C++
- 如何使用对象数组访问类中的变量?
- 无法使用子类变量访问超类公共成员
- 为什么我无法使用继承类访问私有变量?
- 为什么可以从类中的对象访问类的私有变量
- 创建函数来访问类变量是一种好的做法吗
- 从std::thread访问类变量
- 如何访问类变量?公共方法/getters与继承.优点和缺点是什么
- 在使用头文件/源文件时访问类变量的麻烦
- 如何从外部"C"函数访问类变量?
- 无法访问类变量
- 访问类变量时出现问题
- 友元函数无法访问类变量