从C文件访问C 类成员功能
Accessing c++ class member functions from c file
我正在实现基于C 类的库文件。我需要将此库链接到C文件和C 文件。我想,从C 文件实例化类的情况不会存在任何问题。我确实找到了一种从C文件中实例化类的方法,但是似乎我每次调用时都需要每次通过对象。有什么方法可以直接在C文件中使用实例化对象来调用成员函数?
在下面找到代码示例,
myclass.h
#ifndef __MYCLASS_H
#define __MYCLASS_H
class MyClass {
private:
int m_i;
public:
void int_set(int i);
int int_get();
};
#endif
myclass.cc
#include "MyClass.h"
void MyClass::int_set(int i) {
m_i = i;
}
int MyClass::int_get() {
return m_i;
}
mymain_c 。cc
#include "MyClass.h"
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
MyClass *c = new MyClass();
c->int_set(3);
cout << c->int_get() << endl;
delete c;
}
mywrapper.h
#ifndef __MYWRAPPER_H
#define __MYWRAPPER_H
#ifdef __cplusplus
extern "C" {
#endif
typedef struct MyClass MyClass;
MyClass* newMyClass();
void MyClass_int_set(MyClass* v, int i);
int MyClass_int_get(MyClass* v);
void deleteMyClass(MyClass* v);
#ifdef __cplusplus
}
#endif
#endif
mywrapper.cc
#include "MyClass.h"
#include "MyWrapper.h"
extern "C" {
MyClass* newMyClass() {
return new MyClass();
}
void MyClass_int_set(MyClass* v, int i) {
v->int_set(i);
}
int MyClass_int_get(MyClass* v) {
return v->int_get();
}
void deleteMyClass(MyClass* v) {
delete v;
}
}
mymain_c.c
#include "MyWrapper.h"
#include <stdio.h>
int main(int argc, char* argv[]) {
struct MyClass* c = newMyClass();
MyClass_int_set(c, 3); // issue : i need to send the object
everytime
// c->int_set(3); any ways of using like this??
printf("%in", MyClass_int_get(c));
deleteMyClass(c);
}
#include "MyClass.h"
#include "MyWrapper.h"
extern "C" {
MyClass* newMyClass() {
return new MyClass();
}
void MyClass_int_set(MyClass* v, int i) {
v->int_set(i);
}
int MyClass_int_get(MyClass* v) {
return v->int_get();
}
void deleteMyClass(MyClass* v) {
delete v;
}
}
相关文章:
- 类模板的成员功能的定义在单独的TU中完全专业化
- 升压信号2将插槽传递到成员功能以断开连接
- 多次实现成员功能
- 私有成员数据不可用于公共成员功能
- 如何避免大多数成员功能相同的代码重复
- C 成员功能
- =删除用户定义的成员功能,除了构造函数,分配运算符C 11
- C 朋友课程和朋友成员功能
- C 函数调用包装器包含类成员功能作为模板参数
- 创建类成员功能
- 成员功能C 的不同实现
- 返回类型不可知模板类成员功能
- C 11螺纹 - 非静态成员功能的使用无效 - 工作GCC 5.1.0损坏的GCC 7.3.1
- 超载类成员功能标记为const
- C 功能指针和成员功能指针
- 将非静态成员函数C 的使用无效,而将成员功能作为函数变量
- 我可以使用Priority_queue的基础容器的成员功能
- 如何子类可运行任何成员功能
- 共享类时如何隐藏成员功能文件
- 从C文件访问C 类成员功能