15得票2回答
一个weak_ptr如何知道共享资源已经过期?

考虑以下代码:#include <memory> #include <iostream> using namespace std; struct MySharedStruct { int i; }; void print_value_of_i(weak_ptr...

9得票2回答
如何迭代共享指针对象的序列?

这更多是一个样式问题而不是性能问题。我刚刚将我的指针(大部分)转换为shared_ptr对象,并勉强接受了weak_ptr作为原始指针的替代方法。我的问题是,遍历共享指针对象(比如vector)序列的首选方法是什么?以下是我一直在做的内容: std::vector<std::share...

8得票2回答
使用类似于std::owner_less的哈希算法的C++11无序集合

我正在使用外部网络库,该库返回代表打开套接字的一些神奇结构,并且文档说明在将它们插入STL容器时,应使用std::owner_less进行比较。 std::map<MagicStructure, std::shared_ptr<Client>, std::owner_les...

9得票2回答
SWIG,boost共享指针和继承

我在SWIG、共享指针和继承方面遇到了问题。 我正在创建各种C++类,它们彼此继承,使用Boost共享指针来引用它们,然后使用SWIG包装这些共享指针以创建Python类。 我的问题如下: B是A的子类 sA是对A的共享指针 sB是对B的共享指针 f(sA)是一个期望共享指针指向A的函...

36得票2回答
shared_ptr<void>如何知道使用哪个析构函数?

我编写了以下代码,以查看当shared_ptr&lt;Thing&gt;的最后一个引用是shared_ptr&lt;void&gt;并且其自身被销毁时,它会表现出什么行为。#include &lt;iostream&gt; #include &lt;string&gt; #include &l...

49得票13回答
使用boost::shared_ptr时可能存在哪些潜在危险?

在使用 boost::shared_ptr 时,你可能会犯哪些错误呢?换句话说,我在使用 boost::shared_ptr 时需要避免哪些陷阱呢?

30得票4回答
Boost shared_ptr 空指针问题

我正在使用reset()作为共享指针的默认值(相当于NULL)。 但是我该如何检查共享指针是否为NULL? 这样写能返回正确的值吗?boost::shared_ptr&lt;Blah&gt; blah; blah.reset() if (blah == NULL) { //Doe...

34得票5回答
智能指针如何在delete和delete[]之间做出选择?

考虑:delete new std :: string [2]; delete [] new std :: string; 众所周知,第一个是错误的。如果第二个不是错误的,我们就不需要两个不同的运算符了。 现在考虑:std :: unique_ptr &lt;int&gt; x (new i...

9得票2回答
如何从shared_ptr中调用私有析构函数?

我有一个资源管理器(resource_manager)类,它在内部维护了一个std::vector >。resource_manager是resource的友元类。我希望只有resource_manager才能创建/删除resource,所以我将其构造函数设为private(这个方法可行)。 ...

97得票4回答
C++11清除shared_ptr时,我应该使用reset还是设置为nullptr?

我对C++11最佳实践有一个问题。当清除一个共享指针时,我应该使用没有参数的reset()函数,还是将shared_ptr设置为nullptr?例如:std::shared_ptr&lt;std::string&gt; foo(new std::string("foo")); foo.rese...