shared-ptr相关内容
我想了解SHARED_PTR如何递增或递减引用计数? #include #include class B; class A { public: std::shared_ptr b_ptr_; }; class B { public: std::shared_ptr a_ptr_; }; void func(st
..
情况是这样的。假设我们有一个虚拟基类(例如ShapeJuggler),它包含一个方法,该方法将指向虚拟基类对象的共享指针(例如Shape)作为参数。让我们跳到下面的伪代码来理解: class Shape { } class ShapeJuggler { virtual void juggle(shared_ptr) = 0; } // Now deriving a cl
..
如果我将智能指针(scoped_ptr、unique_ptr或shared_ptr)应用到具有自动存储持续时间(即存储在堆栈上)的对象上,会有问题吗?我假设不会像在两种情况下那样(有或没有智能指针),如果没有更多的指针指向它们,它们将被删除。指针本身始终具有自动存储持续时间,即,如果超出范围,它们将被删除。 推荐答案 是,有一个问题(一个很大的问题):您正在使用智能指针做一些它们不是设
..
我打算让一个构造函数接受引用,然后创建指向作为引用传递的对象的指针,并将这些指针存储在一个字段中。然而,由于某种原因,我这样做的方式,正在创建副本,我不知道为什么: #include #include #include // the class with the field of pointers template
..
发件人https://en.cppreference.com/w/cpp/memory/shared_ptr/allocate_shared: template shared_ptr allocate_shared( const Alloc& alloc, Args&&... args ); 存储空间通常
..
是否可以替换Shared_PTR的多个实例引用的对象? 可能我不是很清楚,所以我举个例子: shared_ptr a = new Derived1(); auto b = a; auto c = b; // This function replaces the object where a, b, and c point to. magic(a, new Derived2())
..
我(错误地)在我的程序中有以下作业: std::shared_ptr m_program; // in class m_program = std::make_unique(); // in method 当我发现这个时,我首先想知道为什么它会编译。原来shared_ptr对unique_ptr对象有一个特殊的移动赋值运算符。
..
我对C++比较陌生,这个问题听起来像个初学者问题,但我无法用Internet上的其他资源解决它。 我正在尝试从引用创建一个Shared_PTR。我有以下Book类: #include #include "Author.hpp" class Book { public: void setAuthor(const Author& t_author);
..
所以我尝试以下代码: #ifndef TRANSMITTER_H #define TRANSMITTER_H class connector { public: static boost::shared_ptr Instance(){ if(!instance) { instance = boost:
..
在我的代码中,我需要测试赋予模板的类型是否为指针--无论它是否智能。根据Boost的说法,没有可靠和通用的方法来做到这一点(参见here)--或者有吗? 到目前为止,我检查了以下内容: A:T可以转换为void*吗? B:T有get()方法吗? C:T有名为element_type的类型吗? D:get()是否返回element_type*? 如果(A||B&;&am
..
有时,我们对捕获对象状态的lambda的生存期一无所知(例如,从Object返回它,将其注册为回调而不能取消订阅等)。如何确保lambda不会在调用时访问已销毁的对象? #include #include #include class Foo { public: Foo(const std::string& i_name)
..
我正在转换一个大型代码,以使用定制的共享指针而不是原始指针。我对超载解决方案有问题。考虑这个例子: #include struct A {}; struct B : public A {}; void f(const A*) { std::cout
..
我正在使用独立的ASIO和C++11创建C++服务器应用程序,但收到错误,这就是我寻求帮助的原因。 错误 在类worker_thread中,在调用shared_from_this()期间引发bad_weak_ptr异常,导致程序崩溃。 布局 类connection_manager在std::vector容器中创建并存储std::shared_ptr
..
..
..
我有如下测试程序: #include#include使用命名空间标准;主函数(){shared_ptrsi(新整数(5));返回0;} 调试它: (gdb) l1 #include2 #include3 使用命名空间标准;45 int main()6 {7 shared_ptrsi(新整数(5));8返回0;9 }10(gdb) b 80x400bba
..
我有点习惯于通过 COM 引用计数的概念,而且我对 shared_ptr 有点陌生.CComPtr 有几个不错的属性,我在 shared_ptr 中找不到,我想知道防止误用 shared_ptr 的模式是什么. AddRef/Release 模式保证每个对象只有一个引用计数(引用计数存储在对象本身上),所以当您有一个随机指针围绕它创建一个 CComPtr 时,它是安全的.另一方面,share
..
(编辑)环境: plee@sos-build:/usr/local/include/boost$ lsb_release -a没有可用的 LSB 模块.经销商编号:Ubuntu说明:Ubuntu 11.10发布:11.10代号:oneiricplee@sos-build:/usr/local/include/boost$ uname -aLinux sos-build 3.0.0-12-gene
..
嗨,我正在尝试使用智能指针实现一个简单的单链表,这是我到目前为止所拥有的,我选择使用 C++ 的 shared_ptr,但我读到 unique_ptr 更适合这种情况,但是,我不真的不知道您将如何遍历列表(即 currentNode = currentNode->next)以到达列表的末尾,以便使用 unique_ptr 插入一个元素.这是我到目前为止的代码: template 类链表;模板 类
..
为什么我会收到以下代码的以下错误? 1>C:\Libs\boost_1_44\boost/smart_ptr/shared_ptr.hpp(259): error C2683: 'dynamic_cast' : 'my_namespace::A' 不是多态类型1>D:\[location]\[header_filename].h(35) :参见“my_namespace::A"的声明1>C:\L
..