shared-ptr相关内容

尝试制作shared_ptr时std :: make_shared()中出现错误?

(使用Visual Studio 2010)我正在尝试在项目中创建一个现有类的shared_ptr(该类是在std :: shared_ptr存在十年之前编写的)。此类使用非常量指针指向另一个对象,它的空参数构造函数是私有的。 class Foobar { 公众: Foobar(Baz * rBaz); 私人: Foobar(); } 当我尝试为其创建一个sh ..
发布时间:2020-09-27 04:36:18 C/C++开发

共享的空指针。为什么这样做?

要解决我的应用程序中一个非常特殊的问题,我需要一个共享指针来分配数据,但对于外部世界,底层数据类型应保持隐藏。 我可以通过创建某种我所有其他类都可以继承的Root类来解决此问题,并在此Root类上使用shared_ptr,如下所示: std :: shared_ptr 但是: 我不希望我的所有类都可以从这个Root类继承而来,只是要具有 ..
发布时间:2020-09-27 02:57:36 C/C++开发

如何将Deleter传递给make_shared?

从C ++ 11开始,由于多种原因,开发人员倾向于将智能指针类用于动态生命周期对象。对于这些新的智能指针类,标准甚至建议不要使用 new 这样的运算符,而是建议使用 make_shared 或 make_unique 可以避免某些错误。 如果我们想使用智能指针类,例如 shared_ptr ,我们可以构造一个类似的 shared_ptr p(新int(12)); ..
发布时间:2020-09-27 02:19:58 C/C++开发

C ++ 11 unique_ptr和shared_ptr是否能够转换为彼此的类型?

C ++ 11标准库是否提供任何实用程序来将 std :: shared_ptr 转换为 std :: unique_ptr ,反之亦然?这样安全吗? 解决方案 std :: unique_ptr 是表示专有所有权的C ++ 11方法,但是它的 最吸引人的功能之一是它可以轻松有效地转换为 std :: shared_ptr 。 这是为什么 std :: unique_ptr 非 ..
发布时间:2020-09-26 23:29:36 C/C++开发

文件/程序范围内的2D数组

我需要一个可以通过不同方法访问的数组,我必须在main()中分配该数组,然后让其他函数(如foo())访问该数组。 这个问题帮助我分配了数组:使用malloc定义2D数组并对其进行修改 我正在这样定义数组: char(* array)[ 100] = malloc((sizeof * array)* 25200); 而我在main() 中可以在其中存储25200个字符串数组通 ..
发布时间:2020-09-25 05:22:33 其他开发

与原始指针兼容的(shared_ptr + weak_ptr)设计

序言 在C ++ 11中,有std::shared_ptr + std::weak_ptr组合.尽管非常有用,但是它有一个令人讨厌的问题:您无法轻易地从原始指针构造shared_ptr .由于此缺陷,此类智能指针通常变得“病毒式":人们开始完全避免使用原始指针和引用,并在整个代码中仅使用shared_ptr和weak_ptr智能指针.因为无法将原始引用传递给需要智能指针的函数. 另一方 ..
发布时间:2020-09-22 06:20:17 C/C++开发

C ++ shared_ptr-附加到新的原始指针吗?

我想这里缺少一些简单的东西.我正在使用Boost的shared_ptr. shared_ptr pA(new Foo()); shared_ptr pB(new Foo()); 现在,我想切换pB,使其包含pA的内容,从而减少pB的引用计数.我该怎么办? 解决方案 这是自动完成的: pB = pA; // pB ref count is decre ..
发布时间:2020-09-22 06:05:01 C/C++开发

我可以为本地变量创建一个boost :: shared_ptr吗?

我有一些引用给定对象的方法,有些则采用boost::shared_ptr.到目前为止,在我的测试方法中,我创建了一个shared_ptr指向这些对象之一,并将*ptr传递给需要引用的方法.是否有可能反过来做,例如在堆栈上创建一个本地对象,然后以一种安全的方式创建一个指向它的共享指针,从而可以用传统的指针找到&obj运算符的直接替代方案? 解决方案 #include ..
发布时间:2020-09-22 05:49:09 C/C++开发