问题标签 [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.

0 投票
1 回答
472 浏览

c++ - 如果函数调用导致按引用传递,为什么要为字符串使用共享指针?

在这个提升异步 udp 服务器示例中:http: //www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/tutorial/tutdaytime6/src.html

来自http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/overload1.html

第一个参数的签名是通过引用传递的

那么为什么要使用共享指针来发送消息?

0 投票
1 回答
667 浏览

c++ - 提升作用域指针以提升线程

今天我想用一个 boost::scoped_ptr 来指向一个 boost::thread。

在我的Thread.hboost::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 发生了什么以及它是如何工作的。在我使用原始指针之前,它工作得很好,但此时我不允许使用它。

谢谢你的时间!

0 投票
1 回答
246 浏览

c++ - 未能使用正确的函数来提升 intrusive_ptr

我正在尝试用intrusive_ptr.

由于开罗的东西已经有了引用计数,我写了一个非常简单的包装:

但是,当我尝试创建 的实例时CairoPtr,编译器似乎使用了该函数cairo_surface_t而不是cairo_t

我只是不明白为什么编译器无法找到正确的函数。

0 投票
1 回答
1198 浏览

c++ - 我的变量发生了神秘的写违规

我有一个没有给出正确输出的库。我猜这可能是写违规,并将其重点放在这部分代码上:

default_frame是一个推动力intrusive_ptr<Frame>

在执行语句之前default_frame = frame,object 的内容frame是可以的,但之后,它的内容被修改为怪异的值。所以我在对象的两个成员变量上设置了两个手表frame

然后继续。它突然报告对这些地址的写操作:

这两个旧值是这两个成员变量的正确值。这个写操作是在执行=boost intrusive_ptr 函数之前发生的,因为我按了几十个“next”,代码还在dl-trampoline.S文件中。

什么是dl-trampoline.S?为什么它会默默地写在我的对象的内存上?

除此之外,我还运行 valgrind:

但是,它不是无效写入,而是向该对象报告无效读取,这是在对象创建完成后发生的。

0 投票
2 回答
203 浏览

c++ - shared_ptr 增加父引用

伪代码:</p>

我想使用 shared_ptr 来管理 A 和 B 的指针。B 是 A 的孩子。并且当对孩子有强引用时,父母A不能被破坏。

问题是当 B 引用增加时如何增加父 A 的引用计数。

0 投票
1 回答
129 浏览

c++ - 班级不被认作朋友

我有两个班级说foobar。的构造函数fooprivate允许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 是先构建的吗?如果是这样,有关如何解决此问题的任何建议?

0 投票
1 回答
929 浏览

qt - 带有 Boost::smart_ptr 的 Qt 信号和槽

所以我想要做的是使用 Qt 信号和插槽通过 smart_ptr 传递图像,以便在需要使用数据的所有内容都完成访问它时它会自行删除。

这是我的代码:

A类,继承QObject:

B类,继承QObject:

连接代码:

但是,当我尝试进行连接时,总是返回 false,所以我缺少什么吗?

0 投票
1 回答
273 浏览

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?

0 投票
0 回答
779 浏览

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 的智能指针的替代方法,我会很高兴。

0 投票
2 回答
208 浏览

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.hpptypedef

输出(预期)

我在使用时得到的这个输出boost::share_ptr,表明 ctr 和 dtr 是按预期调用的。