草庐IT

包装类

全部标签

java - 将数组作为指针+大小或范围传递给包装函数

给定一个标题,如:#include#include#includeinlinevoidfoo(constsignedchar*arr,size_tsz){std::copy_n(arr,sz,std::ostream_iterator(std::cout,"\n"));}inlinevoidbar(constsignedchar*begin,constsignedchar*end){std::copy(begin,end,std::ostream_iterator(std::cout,"\n"));}(为了方便起见,我在这里使用了C++11,如果你改变了实现,这可能是C或C++)如何包

c# - 为 C# 包装 native DLL

我编写了一个C++DLL,现在我需要从托管应用程序调用native函数。导出的原生函数如下所示:extern"C"__declspec(dllexport)boolNativeMethod(char*param1,char*param2,char*result);因此,在C#中,我将调用该函数传递2个输入参数、1个输出参数,显然我将读取返回的bool值。我尝试以多种方式包装所有这些,但总是遇到PInvokeStackImbalance异常。我知道调用native函数的唯一方法是在.NET函数声明上应用CallingConvention=CallingConvention.Cdecl)。

c++ - 通过 std::function 包装重载函数

我有一个重载函数,我想将其包装在std::function中传递。GCC4.6没有找到“匹配函数”。虽然我确实在这里找到了一些问题,但答案并不像我希望的那样清楚。有人能告诉我为什么以下代码不能扣除正确的重载以及如何(优雅地)解决它吗?inttest(conststd::string&){return0;}inttest(conststd::string*){return0;}intmain(){std::functionfunc=test;returnfunc();} 最佳答案 这是模棱两可的情况。为了消除歧义,使用显式转换为:ty

c++ - 将动态数组包装到 STL/Boost 容器中?

我需要将动态分配的数组(例如来自a=newdouble[100])包装到std::vector(最好)而不复制数组。此限制是由于我要包装的数组是从文件中映射而来的,因此只需执行vector(a,a+size)就会使内存使用量加倍。有什么技巧可以做到吗? 最佳答案 最好的解决方案之一是STLSoft'sarray_proxy。模板。不幸的是,doxygen从源代码生成的文档页面对理解模板没有多大帮助。源代码实际上可能更好一些:http://www.stlsoft.org/doc-1.9/array__proxy_8hpp-source

c++ - 我如何编写一个迭代器包装器来组合来自底层迭代器的顺序值组?

考虑以下顺序:1,2,3,4,5,6,7,8,9,10我有那个序列的输入迭代器。我想将这些迭代器包装在生成以下序列的迭代器上:(1,2),(3,4),(5,6),(7,8),(9,10)如果不清楚,这个序列是从原始序列开始的连续对连续元素的序列。虽然原始序列有10个元素,但这个元素有5个:每个元素都是从原始序列中的两个元素中获得的。我正在使用Boost的iterator_facade来实现它,但我对此有错误的尝试:templatestructpairing_iterator:boost::iterator_facade,std::array::value_type,2>,std::in

c++ - 尝试包装函数返回值时出现 "<class name> does not provide a call operator"错误

我正在尝试编写一个函数,它将一个仿函数作为参数,调用仿函数,然后返回它的返回值,并将其包装在boost::shared_ptr中。以下拒绝编译,我完全没有想法。我得到“std::vector不提供调用操作符”(大致)。我在MacOSX上使用Clang3.1。templateboost::shared_ptrReturnValueAsShared(boost::functionfunc){returnboost::make_shared(func());}这是我尝试使用它的上下文:make_shared>>>(bind(ReturnValueAsShared>,bind([afuncti

c++ - 如何根据 is_nothrow_move_constructible<T> 声明包装类型 X<T> noexcept 的移动构造函数?

假设我有一个包装类型templatestructX{/*..*/};而且我不能只是X(X&&)=default因为我必须在那里做一些重要的事情。但是,我希望它是noexcept但前提是T(T&&)是noexcept。这可以使用::std::is_nothrow_move_constructible进行测试。我不知道如何根据constexpr有条件地启用构造函数的一个版本或另一个版本。我想可能有一种使用SFINAE的方法,但我不知道如何将其应用于ctors。 最佳答案 noexcept说明符接受任何bool常量表达式,因此您可以直接检

c++ - Qt 的 CUDA 包装器

Qt发布了一个很好的Opencl包装器(QtOpencl),它在隐藏大量样板方面做得非常好,并使OpenCL与Qt的显示小部件和Opengl很好地配合。但有几件事我可以在Cuda中比OpenCL做得更好,而且Cuda工具更加成熟。制作一个简单的CudaC++包装器并集成到Qt构建过程中相对容易,但我想知道是否有人做了更多的事情?理想情况下是等效的QtCuda库。Qt人员对Cuda支持不感兴趣,因为它不够跨平台编辑:仅供搜索,有一个QtCUDAopenGLPBO的包装器。它基于多布斯博士simplePBOexample.需要修复几个错误才能使其与Cuda4很好地配合使用,但这是一个好的开

c++ - 如何在 C++ 中将 char* 缓冲区包装在 WinRT IBuffer 中

我想实现一个包装char*缓冲区的C++WinRTIBuffer,因此我可以将它与接受IBuffer^参数的WinRTWriteAsync/ReadAsync操作一起使用。编辑1(说明)我想避免数据复制。 最佳答案 大部分复制自http://jeremiahmorrill.wordpress.com/2012/05/11/http-winrt-client-for-c/但适合直接包装我自己的byte[]:NativeBuffer.h:#pragmaonce#include#include#include#include#includ

c++ - 将每种类型包装在模板类中的可变参数模板中

给定一个可变参数模板Types...,我想存储A对于包中的每种类型。这可以在A的元组中完成的,但我需要以编程方式派生所述元组的类型。在c++11/14/17中这样的事情甚至可能吗?templateclassA{};templateclassB{//AtupleofA'sforeachtypeinTypes...std::tuple,A,...>data;}; 最佳答案 只需:templateclassB{std::tuple...>data;}; 关于c++-将每种类型包装在模板类中的可