问题标签 [boost-smart-ptr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如果函数调用导致按引用传递,为什么要为字符串使用共享指针?
在这个提升异步 udp 服务器示例中:http: //www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/tutorial/tutdaytime6/src.html
第一个参数的签名是通过引用传递的
那么为什么要使用共享指针来发送消息?
c++ - 提升作用域指针以提升线程
今天我想用一个 boost::scoped_ptr 来指向一个 boost::thread。
在我的Thread.h中boost::scoped_ptr<boost::thread> m_thread
,在我的 Thread.cpp 中有一个函数create()
,应该在其中创建 boost::thread。我试过Thread::m_thread (new boost::thread(attr, boost::bind(%Thread::run, this)));
了,但不出所料,它没有用。
我无法弄清楚自己(或使用 boost 文档)我将如何做到这一点,因为我不完全了解 scoped_ptr 发生了什么以及它是如何工作的。在我使用原始指针之前,它工作得很好,但此时我不允许使用它。
谢谢你的时间!
c++ - 未能使用正确的函数来提升 intrusive_ptr
我正在尝试用intrusive_ptr
.
由于开罗的东西已经有了引用计数,我写了一个非常简单的包装:
但是,当我尝试创建 的实例时CairoPtr
,编译器似乎使用了该函数cairo_surface_t
而不是cairo_t
:
我只是不明白为什么编译器无法找到正确的函数。
c++ - 我的变量发生了神秘的写违规
我有一个没有给出正确输出的库。我猜这可能是写违规,并将其重点放在这部分代码上:
这default_frame
是一个推动力intrusive_ptr<Frame>
。
在执行语句之前default_frame = frame
,object 的内容frame
是可以的,但之后,它的内容被修改为怪异的值。所以我在对象的两个成员变量上设置了两个手表frame
:
然后继续。它突然报告对这些地址的写操作:
这两个旧值是这两个成员变量的正确值。这个写操作是在执行=
boost intrusive_ptr 函数之前发生的,因为我按了几十个“next”,代码还在dl-trampoline.S文件中。
什么是dl-trampoline.S?为什么它会默默地写在我的对象的内存上?
除此之外,我还运行 valgrind:
但是,它不是无效写入,而是向该对象报告无效读取,这是在对象创建完成后发生的。
c++ - shared_ptr 增加父引用
伪代码:</p>
我想使用 shared_ptr 来管理 A 和 B 的指针。B 是 A 的孩子。并且当对孩子有强引用时,父母A不能被破坏。
问题是当 B 引用增加时如何增加父 A 的引用计数。
c++ - 班级不被认作朋友
我有两个班级说foo
和bar
。的构造函数foo
只private
允许bar
类实例化它。
我也在使用,boost::shared_ptr
但是为了简单起见,我在这里没有提到它
但是,当我尝试构建程序时出现错误
在 'typename boost::detail::sp_if_not_array::type boost::make_shared() [with T = bar; 类型名 boost::detail::sp_if_not_array::type = boost::shared_ptr]':| /home/../Projects/CodeBlocks/../bar.cpp|18|从这里需要| /home/../Projects/CodeBlocks/../foo.h|23|错误:'foo::foo()' 是私有的| ||=== 构建完成:1 个错误,2 个警告(0 分钟,5 秒)===|
是因为 bar.h 是先构建的吗?如果是这样,有关如何解决此问题的任何建议?
qt - 带有 Boost::smart_ptr 的 Qt 信号和槽
所以我想要做的是使用 Qt 信号和插槽通过 smart_ptr 传递图像,以便在需要使用数据的所有内容都完成访问它时它会自行删除。
这是我的代码:
A类,继承QObject:
B类,继承QObject:
连接代码:
但是,当我尝试进行连接时,总是返回 false,所以我缺少什么吗?
c++ - Is this the correct way to use the boost::scope_ptr with array?
Since boost::scoped_ptr doesn't work with [] indexing operator, I am trying to do a workaround like this
Will the array be freed later on? Is there a better way to do this?
c++ - 是否有任何替代 boost::intrusive_ptr
我有一些使用 boost::intrusive_ptr 的代码。与 std::shared_ptr 相比,使用 boost::intrusive_ptr 的优势对我来说很有趣。我从这两个 博客中了解到这些。
我想知道是否可以用其他东西替换 boost::intrusive_ptr。通过启用 c++11 支持,我可以用 std::unique_ptr 替换 boost::scoped_ptr。这种改变的动机是我需要将整个 boost 库(只有头文件)与源代码捆绑在一起。请注意,我没有在代码中的任何地方使用链接来提升库。
如果有人知道 boost::intrusive_ptr 或 boost 的智能指针的替代方法,我会很高兴。
c++ - 为什么 boost::scoped_ptr 用 BCB6 阻止 PIMPL 成语?
我正在尝试将 aboost::scoped_ptr
与仅在包含类的 cpp 文件中可见的实现类一起使用。包含类有一个明确定义的析构函数(不是内联的),但我的编译器(Borland C++ 5.6.4)无法编译。
如果我boost::shared_ptr
改用,相同的示例将按预期编译和运行。
我究竟做错了什么?
编辑:很抱歉忘记在这里显示源代码、编译器错误和(预期的)输出:
源代码
文件check_shared.cpp
:
文件SmartPtrTest.h
:
文件SmartPtrTest.cpp
:
编译器错误
...有点像undefined structure 'Impl'
(它是德语:Undefinierte Struktur 'Impl')。编译文件时,编译器在此函数的文件中check_shared.cpp
停止:boost/checked_delete.hpp
typedef
输出(预期)
我在使用时得到的这个输出boost::share_ptr
,表明 ctr 和 dtr 是按预期调用的。