草庐IT

shared-libraries

全部标签

c++ - 在赋值运算符中分配 std::shared_ptr

我正在创建自己的自定义Filter类以用于boost::filtered_graph。WeightMap概念必须具有默认构造函数、复制构造函数和赋值运算符。我创建了下面的类,它有一个std::shared_ptr私有(private)成员。我的问题是我应该如何编写赋值运算符。复制构造函数没有问题,但赋值运算符不起作用。classBFDMFilter{private:constBGraph*m_battlemap;conststd::shared_ptrm_mv_ab;public:BFDMFilter():m_battlemap(nullptr),m_mv_ab(){}BFDMFilt

c++ - 将参数传递给 Makefile 以更改编译后的代码

我是新来的。我正在研究C++共享库,我希望它可以选择在支持或不支持某个功能(代码块)的情况下进行编译。换句话说,我如何通过(可能)将参数传递给make命令来让用户选择是否编译具有该功能的库?例如,我需要用户能够这样做:make--with-feature-x我该怎么做?例如,我需要写一个配置文件吗?或者我可以直接在我的Makefile中执行此操作吗? 最佳答案 我相信以下方法应该有效。您在运行make时定义了一个环境变量。在Makefile中,您检查环境变量的状态。根据状态,您可以定义在编译代码时将传递给g++的选项。g++使用预处

Point Cloud Library(PCL开源库)学习一

一、PCL库简介(包含下载与配置方法)    点云库(PCL)是一个开源算法库,用于点云处理任务和3D几何处理。该库包含用于点云滤波、特征点估计、表面重建、3D配准、模型拟合、对象识别、分割和可视化的算法。PCL库有自己存储点云的数据格式——PCD,但也允许以部分其它格式加载和保存数据集。PCL库是基于C++编写的,并在BSD许可下发布[1]。    (一)C++版本PCL库下载与配置        PCL库C++下载与配置方法详见参考资料[4]。    (二)Python版本PCL库下载与配置    PCL库anaconda+pycharm+windows下载与配置方法见参考资料[5][6]

c++ - 如何获得指向 shared_ptr 的指针?

我现在正在破解一个旧的C代码,试着让它更像C++/Boost风格:有一个资源分配函数如下所示:my_src_type*src;my_src_create(&src,ctx,topic,handle_src_event,NULL,NULL);我尝试用shared_ptr包装src:shared_ptrpSrc;刚才忘记说了。我需要循环执行此操作std::map>dict;my_src_type*raw_ptr;BOOST_FOREACH(std::stringtopic,all_topics){my_src_create(&raw_ptr,ctx,topic,handle_src_eve

c++ - Boost Library的加权中位数被打破了吗?

我承认我不是C++专家。我正在寻找一种计算加权中位数的快速方法,Boost似乎有这种方法。但我似乎无法让它发挥作用。#include#include#include#include#includeusingnamespaceboost::accumulators;intmain(){//Defineanaccumulatorsetaccumulator_set>acc1;accumulator_set,float>acc2;//pushinsomedata...acc1(0.1);acc1(0.2);acc1(0.3);acc1(0.4);acc1(0.5);acc1(0.6);acc

c++ - 使用 std::shared_ptr 对象实例创建 boost::thread

我有以下两个代码段。第一个block按预期编译和工作。但是第二个block不编译。我的问题是,给定下面的代码,当尝试基于由shared_ptr代理的对象实例创建线程时,正确的语法是什么?#include#include#include#includestructfoo{voidboo(){}};intmain(){//Thisworks{foo*fptr=newfoo;boost::threadt(&foo::boo,fptr);t.join();deletefptr;}//Thisdoesn'twork{std::shared_ptrfptr(newfoo);boost::threa

c++ - 'make_shared' 不明确

除非定义了B0RKEN(就像命令行上的-DB0RKEN一样),否则编译以下内容:#include#include#includeusingboost::shared_ptr;usingboost::make_shared;usingmy_fn=std::function;voidfoo(){my_fnfn=[](){};#ifdefB0RKENshared_ptrk=make_shared(fn);#elseshared_ptrk=make_shared(0);#endif}boost似乎在玩一些有趣的游戏,这可能是这段代码出现这个问题的原因。我不明白的是为什么它适用于shared_p

c++ - 用 boost::shared_ptr<std::list<T>> 初始化 boost::shared_ptr<std::vector<T>>

我想初始化一个boost::shared_ptr>vec在构造函数中使用boost::shared_ptr>list初始化列表?这可能吗?我试过这个:测试.hppclassTest{public:Test(boost::shared_ptr>list);private:boost::shared_ptr>vec;};测试.cppTest::Test(boost::shared_ptr>list):vec(list->begin(),list->end()){}部分错误信息:Test.cpp:Inconstructor‘Test::Test(boost::shared_ptr>>)’:T

c++ - 如何有选择地依赖 gcc 的共享对象?

首先,我根本不知道我的问题是否有解决方案。我有以下情况:我开发了一个框架库,它依赖于其他几个库来访问特定的硬件等。到目前为止,这个框架库只是静态链接。对于使用框架库的可执行文件,只需链接可执行文件实际使用的代码的依赖项。(如果我根本不访问特定硬件,我就不必依赖其关联的库。)现在我还需要制作一个框架库的共享对象。此外,依赖项可作为共享库使用,因此不需要任何静态链接。我现在遇到的问题:在构建动态链接到框架库的应用程序时,我必须将所有依赖项动态链接到框架库或应用程序。(否则我会收到来自ld的undefinedreference投诉)我的问题:如果我知道我的应用程序不会使用依赖于此共享对象的框

c++ - 包括 tr1::shared_ptr

我已经包括了#include在我的类(class)文件中,当我尝试编译我的类时,出现以下错误:>Infileincludedfromaccount.h:16:0:/usr/include/c++/4.4.3/tr1/shared_ptr.h:61:46:error:'_Lock_policy'hasnotbeendeclared/usr/include/c++/4.4.3/tr1/shared_ptr.h:63:30:error:expectedtemplate-namebefore'::__shared_count()':有谁知道究竟是什么导致了这个错误?