草庐IT

make_shared

全部标签

c++ - 为什么 shared_ptr<void> 没有专门化?

shared_ptr特殊之处在于,根据定义,它将通过调用delete来调用未定义的行为在void*上.那么,为什么没有shared_ptr抛出编译错误的特化? 最佳答案 Usingshared_ptrtoholdanarbitraryobjectshared_ptrcanactasagenericobjectpointersimilartovoid*.Whenashared_ptrinstanceconstructedas:shared_ptrpv(newX);isdestroyed,itwillcorrectlydisposeof

c++ - OpenCV: "libopencv_core.so.2.3: cannot open shared object file: No such file or directory"

我刚刚在我的Debian机器上安装了OpenCV,但遇到了一些问题。我遵循了Wiki上的安装指南。尝试编译示例给出了似乎是成功的编译,但是尝试运行它们最终会抛出错误:fagg@hubble:~/src/OpenCV-2.3.1/samples/cpp$g++-Wallem.cpp-lopencv_core-lopencv_imgproc-lopencv_calib3d-lopencv_video-lopencv_features2d-lopencv_ml-lopencv_highgui-lopencv_objdetect-lopencv_contrib-lopencv_legacyfa

c++ - 如何处理失败的方法 : by using exceptions or making the methods return bool?

如何处理失败的方法:使用异常使方法返回bool值第一种方法是当出现问题时抛出异常。但是有问题的代码需要放在tryblock中,然后你需要编写catchblock。您需要检查返回值的第二种方法方法,然后做一些事情。那么基本上不是同一个机制吗?你有两个部分:检测到出现问题然后采取措施。那么我使用哪种方法重要吗? 最佳答案 异常的主要好处是它们是非本地的。您可以在抛出异常的地方捕获几个调用层之外的异常。这样,介于两者之间的代码就不必关心异常(除了确保在展开期间进行适当的清理,即异常安全),这使得异常情况不太可能被遗忘。但这种好处是有代价的

c++ - 带有模板的 shared_ptr

如果我想创建一个指向结构的智能指针,我会这样做:structA{intvalue;};typedefboost::shared_ptrA_Ptr;所以,我可以这样写:A_PtrpA0(newA);pA0->value=123;但是,如果我有这样的模板结构:templatestructB{Tvalue;};我想写以下内容:B_PtrpB0(newB);pB0->value='w';那么,我应该如何声明B_Ptr呢? 最佳答案 应该是typedefshared_ptr>B_Ptr;B_Ptrp(newB);p->value='w';

c++ - 复制 boost::shared_ptr

typedefboost::shared_ptrdata_ptr;data_ptrcached_ptr;//classmemberboolsomeWork(data_ptr&passed_ptr){//mustcopypassed_ptr=cached_ptrundersomeconditions//withoutpointingatthesamememory//IsawsomewherethatIshoulddo//passed_ptr.reset(newSomeData(???))//Idon'thavea"reset"onpassed_ptr}我查看了文档;复制和转换构造函数sh

c++ - shared_ptr 的神秘崩溃

有人可以解释为什么在退出内部作用域时以下内容会在main()中崩溃吗?我正在使用VisualStudio2013。虽然GCC4.8.1一切正常,但我怀疑代码中有问题。我就是不明白。#include#includeclassPerson;classPersonProxy;classPersonInterface{public:virtual~PersonInterface()=default;virtualPersonProxy*getProxy()const=0;virtualvoidcreateProxy(Person*)=0;};classPerson:publicPersonIn

c++ - 手动递增和递减 boost::shared_ptr?

有没有办法在C++中手动增加和减少shared_ptr的计数?我要解决的问题如下。我正在用C++编写一个库,但接口(interface)必须是纯C语言。在内部,我想使用shared_ptr来简化内存管理,同时保留通过C接口(interface)传递原始指针的能力。当我通过接口(interface)传递原始指针时,我想增加引用计数。然后客户端将负责调用一个函数,该函数将在不再需要传递的对象时减少引用计数。 最佳答案 也许您正在跨DLL边界使用boost::shared_ptr,这将无法正常工作。在这种情况下boost::intrusi

c++ - std::make_pair 与 c++ 11

您好,我有以下代码:boolPinManager::insertPin(conststd::string&p_pinNumber,conststd::string&p_mode){boost::shared_ptrpin(newGPIOPin(p_pinNumber,p_mode));if(pin){m_pinsInUse.insert(std::make_pair>(p_pinNumber,pin));returntrue;}returnfalse;}此代码始终编译,但当我添加-std=c++0x标志时,此代码无法编译并显示消息:[42%]BuildingCXXobjectgpioa

如何将属性添加到汇总/make $地图(如$ addfields)中的子记录阵列中?

>db.things.find(){"_id":1,"a":[]}{"_id":2,"a":[{"x":2,"y":1},{"x":0,"y":1}]}{"_id":3,"a":[{"x":2,"y":5,"abitraryPropertyWhichShouldBeKept":true}]}我想添加一个计算的属性,说magnitude,到每个子图表a。我不想指定x和y手动,我可能需要保留其他属性。到目前为止我的尝试(我必须手动指定的地方x和y我不必这样做):db.things.aggregate([{$addFields:{a:{$map:{input:'$a',as:'item','in':

c++ - 一旦 std :thread makes into C++Ox,pthreads 会过时吗

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion显然我们仍会维护它,但一旦C++标准保证可用,它会有多大用处。随着新标准的出现,同步原语(Mutex、条件变量)会怎样?您是否认为pthread比std::thread更难掌握?