草庐IT

内包装

全部标签

python - 使用 Cython 包装 C++ 模板以接受任何 numpy 数组

我正在尝试将用C++编写的并行排序包装为模板,以便将其与任何数字类型的numpy数组一起使用。我正在尝试使用Cython来执行此操作。我的问题是我不知道如何将指向numpy数组数据(正确类型)的指针传递给C++模板。我相信我应该为此使用融合数据类型,但我不太明白如何使用。.pyx文件中的代码如下#importingc++templatecdefexternfrom"test.cpp":voidinPlaceParallelSort[T](T*arrayPointer,intarrayLength)defsortNumpyArray(np.ndarraya):#Thisobviously

c++ - 将转发引用传递给线程包装器类

我们先来看一下具体的功能:voidboo1(){std::cout我希望这些功能与一些“守卫”功能一起执行,该功能可以进行异常保护(下面的解释)。所以,我写了两个函数,一个是自由函数,另一个是成员函数:templatetypenamestd::enable_if::value,void>::typefoo(C&&c,Args&&...args){std::cout(args)...);}templatetypenamestd::enable_if::value,void>::typefoo(C&&c,T*o,Args&&...args){std::cout*c)(std::forwar

c++ - 你如何为具有继承的 C++ 类编写 C 包装器

我只是想知道是否有办法为具有继承的C++类创建一个C包装器API。考虑以下几点:classsampleClass1:publicsampleClass{public:intget(){returnthis.data*2;};voidset(intdata);}classsampleClass:publicsample{public:intget(){returnthis.data;}voidset(intdata){this.data=data;}}classsample{public:virtualintget();virtualvoidset(intdata);private:in

c++ - asio 1.11.0 独立包装不正确......还是我?

给定以下测试程序:#include#includeintmain(){asio::io_serviceios1,ios2;asio::io_service::strands2(ios2);autotest_func=wrap(s2,[&]{assert(s2.running_in_this_thread());});autowrap_test_func=wrap(ios1,test_func);wrap_test_func();ios1.run_one();ios2.run_one();}我的理解是这个程序不应该断言。wrap_test_func被包装到io_serviceios1中。

c++ - 有没有办法拥有一个公共(public)成员,从类外部不可修改,没有访问器包装函数?

据我所知,这似乎不可能以直接的方式进行。使成员const使它对每个人都是const。我想要一个只读属性,但想避免使用典型的“getter”。我想要constpublic,mutableprivate。这在C++中完全可行吗?目前我能想到的只是一些模板和friend的诡计。我现在正在调查这个。这似乎是一个愚蠢的问题,但我之前对这里的答案感到惊讶。 最佳答案 一个可能的解决方案可以基于一个内部类,外部类是它的友元,如下所示:structS{templateclassProp{friendstructS;Tt;voidoperator=(

c++ - 为什么我不能直接将 to_lower_copy 传递给 transform 而不是将其包装在 lambda 中?

我正在尝试使用boost::to_lower_copy和std::transform来小写一堆字符串。如下,变体1,使用lamdba工作;变体2还可以证明这是编译器选择的正确模板重载。但是lambda很傻——它所做的只是将单个参数转发给boost::to_lower_copy。但是变体3,直接使用函数模板不会编译,即使我实例化它。我错过了什么?我有clang版本3.3(tags/RELEASE_33/rc3),使用libstdc++-4.8.1-1.fc19.i686和boost-1.53​​.0-14.fc19.i686。vectorstrings={"Foo","Bar"};vec

python - Cython 的新手......似乎无法正确包装枚举

我是Cython的新手,但我想了解更多,因为我希望能够直接从Python调用相当大且复杂的C/C++代码集。我已经能够很好地运行这些示例,甚至能够包装我正在处理的主要项目的一小部分。但是我一直坚持包装枚举。我试图在一个非常简化的示例中阐明我正在尝试的内容。这是myenum.h中的C代码//myenum.henumstrategy{slow=0,medium=1,fast=2};这是我认为可以在pymyenum.pyx中用作wapper的东西#distutils:language=ccdefexternfrom"myenum.h"namespace"myenum":cdefenumstr

c++ - strings.h 并用宏检查包装这个宏是否

我从Google搜索结果中推断出strings.h(来自here)适用于UNIX系统。我想用主机操作系统是否为Linux/UNIX的宏观检查来包装以下行。听到有关它的建议将不胜感激。提前致谢。#include 最佳答案 strings.h只包含几个函数,其中大部分只是标准库中函数的不同名称(例如bcmp()memcmp())。如果您的代码使用这些函数,而不是到处乱扔#ifdef为什么不编写您自己的集合呢?然后每个人都可以使用它们并愉快地免费进行条件编译。这是公共(public)领域中的一组未完全测试的函数,您可以自行承担使用风险:#

c++ - "pure virtual method called"实现 boost::thread 包装器接口(interface)时

我有一个小包装器,它集中了与线程相关的内容:classThread{protected:boost::thread*m_thread;virtualvoidwork()=0;voiddo_work(){work();}public:Thread():m_thread(NULL){}virtual~Thread(){catch_up();deletem_thread;}inlinevoidcatch_up(){if(m_thread!=NULL){m_thread->join();}}voidrun(){m_thread=newboost::thread(boost::bind(&Thr

C++:函数包装器是否与内联一起工作?

如果您在编译器中启用了完全优化并设置了如下类:classA{voidDo_A_Stuff();};classB{Aa;voidDo_B_Stuff(){a.Do_A_Stuff();}};classC{Bb;voidDo_C_Stuff(){b.Do_B_Stuff();}};classD{Cc;voidDo_D_Stuff(){c.Do_C_Stuff();}};是否存在调用Do_D_Stuff()比直接调用Do_A_Stuff()慢的情况?此外,这是否需要在每个包装器“链”上使用inline关键字,或者,由于这只是一个建议,编译器是否可以决定在没有关键字的情况下对其进行优化?我知道