shared-ptr相关内容
(使用Visual Studio 2010)我正在尝试在项目中创建一个现有类的shared_ptr(该类是在std :: shared_ptr存在十年之前编写的)。此类使用非常量指针指向另一个对象,它的空参数构造函数是私有的。 class Foobar { 公众: Foobar(Baz * rBaz); 私人: Foobar(); } 当我尝试为其创建一个sh
..
我在使用shared_ptr和enable_shared_from_this玩了一段时间,而遇到了我不太了解的东西。 在我第一次尝试时,我构造了一些东西像这样: class shared_test:std :: enable_shared_from_this { public: void print(bool recursive){ if(recur
..
要解决我的应用程序中一个非常特殊的问题,我需要一个共享指针来分配数据,但对于外部世界,底层数据类型应保持隐藏。 我可以通过创建某种我所有其他类都可以继承的Root类来解决此问题,并在此Root类上使用shared_ptr,如下所示: std :: shared_ptr 但是: 我不希望我的所有类都可以从这个Root类继承而来,只是要具有
..
当第二个示例仅从基类调用析构函数时,为什么使用std :: shared_ptr释放时从基类和派生类调用析构函数? class Base { public: 〜Base() { std :: cout
..
shared_ptr circle(new Circle(Vec2f(0,0),0.1,Vec3f(1,0,0)))); shared_ptr rect(新Rect2f(Vec2f(0,0),5.0f,5.0f,0, Vec3f(1.0f,1.0f,0))); 我想了解为什么以上内容无法编译。无论出于何种原因,当我尝试创建Rect2f实
..
从C ++ 11开始,由于多种原因,开发人员倾向于将智能指针类用于动态生命周期对象。对于这些新的智能指针类,标准甚至建议不要使用 new 这样的运算符,而是建议使用 make_shared 或 make_unique 可以避免某些错误。 如果我们想使用智能指针类,例如 shared_ptr ,我们可以构造一个类似的 shared_ptr p(新int(12));
..
shared_ptr circle(new Circle(Vec2f(0,0),0.1,Vec3f(1,0,0)))); shared_ptr rect(新Rect2f(Vec2f(0,0),5.0f,5.0f,0, Vec3f(1.0f,1.0f,0))); 我想了解为什么以上内容无法编译。无论出于何种原因,当我尝试创建Rect2f实
..
这个问题确实适合标题:我很好奇,知道造成这种差异的技术原因是什么,还有原理? std :: shared_ptr sharedToVoid; //合法; std :: unique_ptr uniqueToVoid; //格式错误; 解决方案 这是因为 std: :shared_ptr 实现类型擦除,而 std :: unique_ptr 不
..
C ++ 11标准库是否提供任何实用程序来将 std :: shared_ptr 转换为 std :: unique_ptr ,反之亦然?这样安全吗? 解决方案 std :: unique_ptr 是表示专有所有权的C ++ 11方法,但是它的 最吸引人的功能之一是它可以轻松有效地转换为 std :: shared_ptr 。 这是为什么 std :: unique_ptr 非
..
我需要一个可以通过不同方法访问的数组,我必须在main()中分配该数组,然后让其他函数(如foo())访问该数组。 这个问题帮助我分配了数组:使用malloc定义2D数组并对其进行修改 我正在这样定义数组: char(* array)[ 100] = malloc((sizeof * array)* 25200); 而我在main() 中可以在其中存储25200个字符串数组通
..
我尝试从boost asio聊天示例开始,并派生自己的联网程序.不幸的是,我在理解实际情况时遇到了一些问题.我试图将程序减少到最低限度.服务器类等待传入的连接,并创建一个会话对象来处理连接.这是服务器的代码: #include #include #include #include #include
..
我编写了一些类(通常作为boost::asio的一部分),这些类的对象依赖于包装在shared_ptr中,因为它们使用shared_from_this().如果没有在shared_ptr中实例化该对象,是否有一种方法可以防止该对象被编译? 所以,我要寻找的是 std::shared_ptr a = std::make_shared(); // sho
..
我有一个用boost asio制成的TCP/IP服务器,它包装在一个类中.现在,我想在类头文件中声明套接字,eindpoint和acceptor,以便我可以使用该套接字的成员函数.服务器现在在类构造函数中运行.我尝试使用如下初始化列表: CommunicationModuleTCPIP::CommunicationModuleTCPIP(bool Server,
..
我相当了解c ++,下面描述的一个问题可能很简单,并且是基于语法错误的,但是我还没有找到解决这个问题的方法. 基本上我得到的错误是: remote_hw_interface_node.cpp:23:68: required from here /usr/include/boost/function/function_template.hpp:231:11: error: no match
..
我正在使用 SimpleAmqpClient ,它是与RabbitMQ代理一起使用的C ++库.我可以发送和接收字符串,即"hello world".这是执行此操作的程序. #include #include #include #include #inc
..
序言 在C ++ 11中,有std::shared_ptr + std::weak_ptr组合.尽管非常有用,但是它有一个令人讨厌的问题:您无法轻易地从原始指针构造shared_ptr .由于此缺陷,此类智能指针通常变得“病毒式":人们开始完全避免使用原始指针和引用,并在整个代码中仅使用shared_ptr和weak_ptr智能指针.因为无法将原始引用传递给需要智能指针的函数. 另一方
..
我想这里缺少一些简单的东西.我正在使用Boost的shared_ptr. shared_ptr pA(new Foo()); shared_ptr pB(new Foo()); 现在,我想切换pB,使其包含pA的内容,从而减少pB的引用计数.我该怎么办? 解决方案 这是自动完成的: pB = pA; // pB ref count is decre
..
我需要保护对班级中数据结构的访问.由于我无法使用互斥锁(因为无法复制它),因此我正在考虑使用shared_ptr并将互斥锁保留在此处.这是我的想法的示例代码: class Sample { typedef boost::lock_guard AcquireLock; boost::shared_ptr mutt; pu
..
我有一些引用给定对象的方法,有些则采用boost::shared_ptr.到目前为止,在我的测试方法中,我创建了一个shared_ptr指向这些对象之一,并将*ptr传递给需要引用的方法.是否有可能反过来做,例如在堆栈上创建一个本地对象,然后以一种安全的方式创建一个指向它的共享指针,从而可以用传统的指针找到&obj运算符的直接替代方案? 解决方案 #include
..
由于boost::/std::shared_ptr具有删除其删除器的类型的优点,因此您可以执行类似 的操作 #include typedef std::shared_ptr gc_ptr; int main(){ gc_ptr p1 = new int(42); gc_ptr p2 = new float(3.14159); gc_ptr p3 =
..