草庐IT

gray8_ptr_t

全部标签

c++ - boost::shared_ptr 和动态转换

我在使用基类的shared_ptr时遇到问题,我似乎无法在取消引用派生类的方法时调用它。我相信代码会比我更冗长:classBase:publicboost::enable_shared_from_this{public:typedefboost::shared_ptrpointer;};classDerived:publicBase{public:staticpointercreate(){returnpointer(newDerived);}voidanyMethod(){Base::pointerfoo=Derived::create();//Ican'tcallanymethod

c++ - boost::shared_ptr 和动态转换

我在使用基类的shared_ptr时遇到问题,我似乎无法在取消引用派生类的方法时调用它。我相信代码会比我更冗长:classBase:publicboost::enable_shared_from_this{public:typedefboost::shared_ptrpointer;};classDerived:publicBase{public:staticpointercreate(){returnpointer(newDerived);}voidanyMethod(){Base::pointerfoo=Derived::create();//Ican'tcallanymethod

c++ - 使用 Boost Python & std::shared_ptr

我正在尝试让BoostPython与std::shared_ptr很好地配合使用。目前,我收到此错误:Traceback(mostrecentcalllast):File"test.py",line13,incomp.place_annotation(circle.centre())TypeError:Noto_python(by-value)converterfoundforC++type:std::shared_ptr来自调用circle.centre(),它返回一个std::shared_ptr。我可以将每个std::shared_ptr更改为boost::shared_ptr(

c++ - 使用 Boost Python & std::shared_ptr

我正在尝试让BoostPython与std::shared_ptr很好地配合使用。目前,我收到此错误:Traceback(mostrecentcalllast):File"test.py",line13,incomp.place_annotation(circle.centre())TypeError:Noto_python(by-value)converterfoundforC++type:std::shared_ptr来自调用circle.centre(),它返回一个std::shared_ptr。我可以将每个std::shared_ptr更改为boost::shared_ptr(

c++ - unique_ptr、pimpl/forward 声明和完整定义

我已经查看了问题here和here,但仍然无法找出问题所在。这是调用代码:#include"lib.h"usingnamespacelib;intmain(constintargc,constchar*argv[]){return0;}这是库代码:#ifndeflib_h#definelib_h#include#include#includenamespacelib{classFoo_impl;classFoo{public:Foo();~Foo();private:Foo(constFoo&);Foo&operator=(constFoo&);std::unique_ptrm_imp

c++ - unique_ptr、pimpl/forward 声明和完整定义

我已经查看了问题here和here,但仍然无法找出问题所在。这是调用代码:#include"lib.h"usingnamespacelib;intmain(constintargc,constchar*argv[]){return0;}这是库代码:#ifndeflib_h#definelib_h#include#include#includenamespacelib{classFoo_impl;classFoo{public:Foo();~Foo();private:Foo(constFoo&);Foo&operator=(constFoo&);std::unique_ptrm_imp

c++ - 关于weak_ptr的线程安全

std::shared_ptrg_s=std::make_shared(1);voidf1(){std::shared_ptrl_s1=g_s;//readg_s}voidf2(){std::shared_ptrl_s2=std::make_shared(3);std::threadth(f1);th.detach();g_s=l_s2;//writeg_s}关于上面的代码,我知道读取和写入相同shared_ptr的不同线程会导致竞争条件。但是weak_ptr呢?下面的代码中是否有任何竞争条件?(我的平台是微软VS2013。)std::weak_ptrg_w;voidf3(){std:

c++ - 关于weak_ptr的线程安全

std::shared_ptrg_s=std::make_shared(1);voidf1(){std::shared_ptrl_s1=g_s;//readg_s}voidf2(){std::shared_ptrl_s2=std::make_shared(3);std::threadth(f1);th.detach();g_s=l_s2;//writeg_s}关于上面的代码,我知道读取和写入相同shared_ptr的不同线程会导致竞争条件。但是weak_ptr呢?下面的代码中是否有任何竞争条件?(我的平台是微软VS2013。)std::weak_ptrg_w;voidf3(){std:

c++ - 为什么 shared_ptr 不允许直接分配

所以当使用shared_ptr你可以写:shared_ptrvar(newType());我想知道为什么他们不允许更简单更好的(imo):shared_ptrvar=newType();你需要使用.reset()来实现这样的功能。:shared_ptrvar;var.reset(newType());我习惯了OpenCVPtr类,它是一个智能指针,允许直接赋值,一切正常 最佳答案 语法:shared_ptrvar=newType();是copyinitialization.这是用于函数参数的初始化类型。如果允许,您可能会不小心将普通

c++ - 为什么 shared_ptr 不允许直接分配

所以当使用shared_ptr你可以写:shared_ptrvar(newType());我想知道为什么他们不允许更简单更好的(imo):shared_ptrvar=newType();你需要使用.reset()来实现这样的功能。:shared_ptrvar;var.reset(newType());我习惯了OpenCVPtr类,它是一个智能指针,允许直接赋值,一切正常 最佳答案 语法:shared_ptrvar=newType();是copyinitialization.这是用于函数参数的初始化类型。如果允许,您可能会不小心将普通