c/c++语言开发共享你如何为inheritance的c ++类编写ac包装器

我只是想知道是否有办法为具有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

      (0)
      上一篇 2021年2月5日
      下一篇 2021年2月5日

      精彩推荐