shared-ptr相关内容
感谢 std :: make_shared ,我想知道 std :: shared_ptr 的构造函数是否需要任何值,除非与传统/库代码,例如在存储工厂输出时. 还有其他合法用例吗? 避免使用该构造函数是否合理? 甚至扩展了对代码的检查,以在每次使用时都警告程序员? shared_ptr :: reset(T *)是否应使用相同的准则(无论它们是什么)? 关于代码检查:我
..
我正在尝试重构代码,以便使用前向声明而不是包含许多标头.我对此并不陌生,并且对boost :: shared_ptr有疑问. 说我有以下界面: #ifndef I_STARTER_H_#定义I_STARTER_H_#includeIStarter类{上市:虚拟〜IStarter(){};虚拟运算符()()= 0;};typedef boost
..
我发现编写返回boost :: shared_ptr的克隆方法的一种有用方法是 A类{上市:shared_ptrClone()const{return(shared_ptr(CloneImpl()));}受保护的:虚拟A * CloneImpl()const{return(new A(* this));}};B级:公共A{上市:shared_ptrClone()cons
..
当应用程序中涉及智能指针时,我已经阅读了很多有关性能问题的讨论.常见的建议之一是将智能指针传递为const& amp;.而不是像这样的副本: void doSomething(std :: shared_ptr o){} 与 void doSomething(const std :: shared_ptr& o){} 但是,第二个变体是否真的没有达到共享指针的目的?
..
我想使用类似指针的对象 所有权m_foo 用于拥有对象和句柄 Referencem_someFoo 作为另一个上下文中的经典“指针",而我的 Reference 应该知道何时不再存在原始对象(例如,通过返回nullptr),并且还应该有可能防止原始对象删除(锁定)一小段时间. 我知道 shared_ptr (所有权)和 weak_ptr (参考)
..
以下是我正在尝试的玩具代码...我理解第一个和第二个.第一个将所有权赋予 _p .第二个将 p 复制到 _p .但我不明白第三个... const shared_ptr& 的 std :: move 是什么意思?谢谢. class P {};A类{上市://第一A(std :: shared_ptr
..
我正在阅读std :: shared_ptr的线程安全性以及它提供的原子操作重载,并且想知道类中它的特定用例. 根据我对shared_ptr所承诺的线程安全性的理解,拥有这样的get方法是安全的: class MyClass{std :: shared_ptr_obj;上市:无效的start(){std :: lock_guard锁(_mtx);
..
这是一个智能指针: std :: shared_ptrp(new char [size])表示用原始二进制文件内容填充的数组.在整个数组从文件复制到RAM之后(也只有在此之后),我可以对其进行解析,在此期间,我会检索一些标头信息(一些第一个双字).然后是实际数据. 在不提供更多上下文的情况下,我很方便地将提到的共享指针设置为以实际数据开头的新地址.该地址仍在分配的内存中.但是如
..
请参见以下示例: #include#includeFoo类{上市:Foo(){std :: cout
..
shared_ptr观察者20.8.2.2.5 C ++ 14最终草案(n4296) long use_count()const noexcept; 返回:与 * this 共享所有权的 shared_ptr 对象的数量,包括 * this ,如果 *,则为0这个是空的. [注意: use_count()不一定有效.—尾注] 解决方案 根据此页面 http://ww
..
shared_ptr用于我们希望有一个动态分配项目的多个所有者的场景. 问题是,我无法想象需要多个所有者的任何情况.我可以描绘的每个用例都可以使用unique_ptr来解决. 有人可以提供一个实际的用例示例,其中包含shared_ptr是必需的代码(按要求,我的意思是作为智能指针的最佳选择)?所谓“现实生活",是指一些实际且务实的用例,而不是过于抽象和虚构的用例. 解决方案 在
..
为什么编译器会抱怨将线程函数的声明更改为 void thr(std :: shared_ptr& p) .Complie错误: gcc-10.1.0/include/c ++/10.1.0/thread:在实例化中'std :: thread :: thread(_Callable& ;, _Args& ...)[with _Callable = void(&)(std
..
这很难解释,但我会尽力而为.因此,我有一个RenderComponent,EventManager和RenderSystem.在我的RenderComponents构造函数中,我引发RenderSystem订阅的renderComponentCreated事件.使用事件args对象,我将一个RenderNode作为数据传递,该数据包含renderSystem绘制事物所需的信息(可绘制,位置和类型)
..
我想优化我的代码.我有一个具有shared_ptr数据成员的类.在此类的某些方法中,我创建了需要使用该成员的对象(只是从shared_ptr指向的对象中获取信息).我知道这些创建的对象的生命周期比我的主类要短.如何传递该指针?我认为不需要另一个shared_ptrs(因为我保证该对象将存在).那么,应该如何创建我创建的类?他们应该得到原始指针吗?Weak_ptr?还是最好的解决方案是获取share
..
我有一个带有私有构造函数的单例类.在静态工厂方法中,请执行以下操作: shared_ptrMyClass :: GetInstance(){静态的one_flag OnceFlag;call_once(onceFlag,[](){如果(_instance == nullptr)_instance.reset(new MyClass());});返回_instance;}
..
我正在尝试找出如何将std :: shared_ptr与自定义删除器一起使用.具体来说,我将它与SDL_Surface一起使用: std :: shared_ptr(SDL_LoadBMP(....),SDL_FreeSurface); 可以编译并正常运行.但是,我想尝试使用自己的删除器,但无法解决该问题.SDL_FreeSurface的文档位于: htt
..
据我了解,分配共享的ptr时的行为应类似于: a) if(--this-> count == 0){释放this-> count和this-> obj} b) this-> count = r-> count,this-> obj = r-> obj; 助推器只是 shared_ptr&运算符=(shared_ptr const& r)BOOST_NOEXCEPT{this_
..
在 shared_ptr 的boost实现中,它使用谈原子 在libc ++的实现中,使用完整的内存屏障 模板内联T增量(T& t)_NOEXCEPT{返回__sync_add_and_fetch(& t,1);}模板内联T减量(T& t)_NOEXCEPT{返回__sync_add_and_fetch(& t,-1);}} //名称 有此决定的
..
在我的情况下, T 是 pcl :: PointCloud> ,但该问题应代表任何类型的 T .下面的示例产生一个错误: using pc = pcl :: PointCloud> ;;boost :: shared_ptrp(新电脑);boost :: shared_ptrconst_
..
C#中是否有提供IDisposable对象共享所有权的类?像C ++中的shared_ptr一样?如果不是,这里的最佳做法是什么? 更新 我正在通过本机lib编写一个c ++/cli包装器.而且我需要释放本机资源(例如, MAPI COM接口,因此我需要确定性的资源释放). 本机部分: //Message.h class Message { ... }; //Messag
..