草庐IT

内包装

全部标签

c++ - 创建类的可变包装器

我有模板类ReadertemplateclassReader{typedefTtype;};特殊实现(派生类)具有带签名的方法Tread(IStream&,任意数量的参数,可能为零)即类IntegerReader公共(public)函数:templateclassIntegerReader:publicReader{public:Tread(IStream&stream);Tread(IStream&stream,Tmin,Tmax);Tread(IStream&stream,Tmin,Tmax,std::stringname);}现在我想创建一个包装器,它允许我创建另一个阅读器,并调

python - 使用 SWIG 和 Python/C API 包装返回 std::map 的函数

我想包装一个返回std::map的C++例程整数和指向C++类实例的指针。我无法让它与SWIG一起使用,如果能提供任何帮助,我将不胜感激。我试图通过一个简单的例子将这个问题归结为它的本质。headertest.h定义如下:/*Filetest.h*/#include#include#includeclassTest{private:staticintn;intid;public:Test();voidprintId();};std::mapget_tests(intnum_tests);实现在test.cpp中定义下面:/*Filetest.cpp*/#include"test.h"s

c++ - C++ 包装 C 代码的重复 const 错误

我从C++应用程序中包含并使用了一些C代码,这里是重要的部分:C代码ifdef__cplusplusextern"C"{endif...typedefvoid*problem_type;...intproblematic_fn_proto(constproblem_typeconstarg);ifdef__cplusplus}endif不幸的是,由于duplicate'const'错误,这将无法编译。导致问题的是typedef。如果我只是将函数的原型(prototype)更改为:intproblematic_fn_proto(constvoid*constarg);没有更多的问题。不幸

python - 将 python 函数传递给 SWIG 包装的 C++ 代码

我正在尝试使用SWIG为python包装一个C++库。该库经常使用回调函数,方法是将特定类型的回调函数传递给类方法。现在,包装代码后,我想从python创建回调逻辑。这可能吗?这是我正在做的一个实验来找出它..目前不起作用。头文件和swig文件如下:paska.h:typedefvoid(handleri)(intcode,char*codename);//handleriisnowanaliastoafunctionthateatsint,stringandreturnsvoidvoidwannabe_handleri(inti,char*blah);voidhandleri_eat

c++ - 在 OpenGL 对象包装器中自动绑定(bind)

我倾向于将OpenGL对象包装在它们自己的类中。在OpenGL中有绑定(bind)的概念,你绑定(bind)你的对象,用它做一些事情然后解除绑定(bind)。例如,一个纹理:glBindTexture(GL_TEXTURE_2D,TextureColorbufferName);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_BASE_LEVEL,0);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAX_LEVEL,1000);glBindTexture(GL_TEXTURE_2D,0);包装这将是这样的:textu

c++ - 如何删除使用 SWIG 生成的 Python 包装器中的堆对象?

我正在开发一个Python模块和一个C++库。在C++代码中,我有一个返回堆对象的函数,如下所示。MyClass*func(){MyClass*myclass=newMyClass();returnmyclass;}但是当我在Python端使用这个函数时,我无法删除返回的对象。myclass=func()delmyclass#stillremainsinmemory谁能告诉我如何在Python代码中删除返回的对象?我可以将返回值的类型从MyClass*更改为MyClass,这样我就可以避免这种内存泄漏。但我不想触及C++代码,因为C++库已在其他地方使用。

c++ - 使用类型转换将 C 库包装在 C++ 类中

我正在慢慢学习成为一名更好的C++程序员,目前我正在讨论为C库实现包装器的最佳方法。该库是一种压缩文件格式的包装器,可以存储各种类型的标签(char*、char、double、float、int32_t)。类型存储为uint8_t*并且有许多辅助方法可以将这些标签转换为正确的类型。例如:chartag2char(constuint8_t*v);char*tag2string(constuint8_t*v);uint32_ttag2int(constuint8_t*v);等等。我在模板方面没有太多经验,但是否值得以类似于boostprogramoptions的方式将这些方法包装在模板函数

c++ - 带有 C++ 包装器的 OpenCL - 如何将 cl::CommandQueue 转换为 cl_command_queue?

我将OpenCL与CL/cl.hppc++​​包装器一起使用。所以我有C++对象,例如cl::CommandQueue而不是cl_command_queue。我还想使用AMD的BLAS库clAmdBlas。那里的函数需要一个cl_command_queue作为它们的参数之一。如何从cl::CommandQueue获取cl_command_queue? 最佳答案 要获取cl_command_queue对象,您只需使用()运算符:cl::CommandQueuecppQueue;...cl_command_queuequeue=cppQ

c++ - 作为 std::vector 包装器的用户定义容器应该继承还是包含 std::vector?

作为std::vector包装器的用户定义容器应该继承还是包含std::vector?我有一个应该是容器的类。我看到两个选项:1)从vector继承2)有一个私有(private)成员vector并覆盖所有vector函数以使我的容器充当vector我不确定这是否只是风格的问题,还是从根本上来说更好比另一个?我想添加的额外功能很小,这里的数据成员和函数很少在那里。大多数情况下,处理vector中的数据将是方便的功能。 最佳答案 首先,STL容器不应该被继承。他们甚至没有虚拟析构函数。其次,选择组合/聚合而不是继承总是更可取的,因为这

c++ - 我应该为一个只是 vector 包装器的类编写迭代器吗?

我应该为一个只是vector包装器的类编写迭代器吗?我的类Record中唯一的私有(private)成员是vector。我希望能够做到这一点:for(auto&elem:record){//dosomethingwithelem}其中record是Record类型。为此,我需要实现迭代器对于记录类。但是,我也可以这样做:for(auto&elem:record.elems){//dosomethingwithelem}其中record.elems是我提到的vector。但是这样我需要将其公开。另一种方法是:for(auto&elem:record.getElems()){//dosom