如何将删除器传递给由shared_ptr持有的同一类中的方法
我有几个来自第三方库的类,类似于 StagingConfigDatabase 类,它需要在创建后销毁。我正在为 RAII 使用shared_ptr,但更愿意使用单行代码创建shared_…
enable_shared_from_this 和继承
我有一个继承自 enable_shared_from_this 的类型,以及从此类型继承的另一个类型。现在我无法使用shared_from_this方法,因为它返回基类型,并且在特…
初始化一个引用的shared_ptr ( std::tr1::shared_ptr)
我正在使用一个库,它返回对我的引用。 我需要将此引用用作类属性。 无法直接在构造函数中初始化属性(需要之前初始化lib),我考虑使用shared_ptr进…
weak_ptr和父子循环依赖
我目前有类似以下内容: class Parent { //just a single child... for sake of simplicity //no other class holds a shared_ptr reference to child…
如何管理指向已引用对象内部数据的shared_ptr?
假设我有这些类: struct Engine { int engine_data; }; struct Car { shared_ptr engine; int car_data; }; 出于性能原因,我想让它们紧密地打包在内…
typedef 共享指针的最佳策略是什么?
我有一个关于在冗长模板中使用 typedef 的快速问题。关键是:我发现自己陷入了困境——除了客户端函数本地之外,似乎没有一个放置 typedef 的好地方。…
C++:创建模板化共享对象而不是一个shared_ptr目的
根据我之前的问题,我希望 boost::shared_ptr 实际上是 A 的子类(或者可能是 A*),这样它可以在以 A* 作为参数的方法中使用。 考虑下面的类: class…
boost::shared_ptr 问题。为什么这有效?
在尝试这个问题时,我创建了一个我完全不理解的示例。特别是,它突出了我对指针、引用和 boost::shared_ptr 的误解。 int& r = *(new int(0));//gratu…
C++:创建共享对象而不是指向对象的共享指针
boost::shared_ptr 真的很困扰我。当然,我理解这样的东西的实用性,但我希望我可以使用 shared_ptr 作为 A*。考虑以下代码 class A { public: A() {}…
关于 boost::shared_ptr 的困惑
我的问题围绕着是否必须从接口公开 boost::shared_ptr 的使用以及是否应该从接口公开原始指针或引用。 考虑一个人有一个雇员的情况。 Employeer在内部…
在 C++ 中管理内存所有权的最佳方法?共享指针或其他机制?
在一段新代码中,我有几个相互引用的不同类。是这样的(这不是我的实际情况,而是类似的例子): class BookManager { ... }; class Book { public: v…
可以将共享指针与非指针数据成员混合使用吗?
采取以下示例: class BookManager { ... }; class Book { public: void setBookManager(BookManager *bookManager) {m_bookManager = bookManager;} …
一起使用 boost::bind、boost::shared_ptr 和 boost::thread 时不会调用复制构造函数
我正在使用 boost::bind 创建一个新的 boost::thread,并将其存储在 boost::shared_ptr 中。 我将函数和参数传递给boost::thread,但是当线程启动时,…
boost::bind 封装 COM 接口返回的 HANDLE
我有一个使用如下 COM 对象的 Visual Studio 2008 c++ 项目: ISomeComInterface* foo; HANDLE file = foo->CreateFile(); // file operations... foo…
boost shared_ptr 工厂函数
我对指针的世界还很陌生,并且在我的代码中遇到了问题。我有一个工厂类可以吐出shared_ptr。 “Entity”是从此方法创建的任何类型的shared_ptr 的基类…