我只是想知道是否有办法为具有inheritance的c ++类创建ac包装器API。
考虑以下:
class sampleClass1 : public sampleClass{ public: int get() { return this.data *2; }; void set(int data); } class sampleClass : public sample{ public: int get() { return this.data; } void set(int data) {this.data = data; } } class sample { public: virtual int get(); virtual void set(int data); private: int data; }
我如何包装sampleClass1以使其在ac上下文中工作?
谢谢,
首先,你的sample
应该真正得到一个合适的virtual
dtor。
接下来,只需为每个函数添加一个带C-binding的自由函数,该函数是接口的一部分,只需委托:
“sample.h”
#ifdef __cplusplus extern "C" { #endif typedef struct sample sample; sample* sample_create(); sample* sample_create0(); sample* sample_create1(); void sample_destroy(sample*); int sample_get(sample*); void sample_set(sample*, int); #ifdef __cplusplus } #endif
“样品-c.cpp”
#include "sample.h" // Included first to find errors #include "sample.hpp" // complete the types and get the public interface sample* sample_create() {return new sample;} sample* sample_create0() {return new sampleClass;} sample* sample_create1() {return new sampleClass1;} void sample_destroy(sample* p) {delete p;} int sample_get(sample* p) {return p->get();} void sample_set(sample* p, int x) {p->set(x);
“sample.hpp”
// Your C++ header here, with class definition
“sample.cpp的”
#include "sample.hpp" // Included first to find errors // Implement the class here
以上就是c/c++开发分享你如何为inheritance的c ++类编写ac包装器相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562816.html