shared-ptr相关内容

将智能指针中包含的C ++对象传递给Python

我在C ++中有一个类. 我在C ++代码中从此类创建一个对象.我希望可以在Python中访问此对象.我使用boost::shared_ptr保留对象地址. 我已经检查了一些有关此的帖子,但不是很有帮助. 我认为最好的方法是在解释器初始化后在Python名称空间中创建一个对象,然后将我的boost shared_ptr分配给在Python中创建的对象. 我已经在cpp中使用BOOST ..
发布时间:2020-09-22 05:34:12 C/C++开发

在构造函数之后初始化boost :: asio套接字

[更新:]对于感兴趣的人,答案只是将io_service成员var包装在boost :: ref(boost :: ref(io_service _)) 我正在尝试使用boost asio库中的udp服务器示例,以查看是否可以在构造函数之外的其他地方初始化套接字.示例中建议的构造函数如下: class server { public: server(boost::asio::io_ ..
发布时间:2020-09-22 05:16:05 C/C++开发

需要enable_shared_from_this吗?

我是C ++ 11的新手,遇到过enable_shared_from_this.我不知道它要达到什么目的?因此,我有一个使用enable_shared_from_this的程序. struct TestCase: enable_shared_from_this { std::shared_ptr getptr() { return shared ..
发布时间:2020-09-22 05:07:48 C/C++开发

为什么enable_shared_from_this具有非虚拟析构函数?

我有一个宠物项目,我在其中尝试了C ++ 11的新功能.虽然我有使用C的经验,但是我对C ++还是很陌生.为了使自己掌握最佳实践(除了大量阅读),我启用了一些严格的编译器参数(使用GCC 4.4.1): -std=c++0x -Werror -Wall -Winline -Weffc++ -pedantic-errors 这对我来说很好.到目前为止,我已经能够解决所有障碍.但是,我需要e ..
发布时间:2020-09-22 05:03:23 C/C++开发

我们应该按引用还是按值传递shared_ptr?

当函数采用shared_ptr(来自boost或C ++ 11 STL)时,是否要传递它: 通过const引用:void foo(const shared_ptr& p) 或按值:void foo(shared_ptr p)? 我更喜欢第一种方法,因为我怀疑它会更快.但这真的值得吗?还是有其他问题? 能否请您说明选择的原因,或者在这种情况下,认为无关紧要的原因. ..
发布时间:2020-09-22 04:28:23 C/C++开发

奇怪的shared_ptr行为

我发现c ++中std::shared_ptr的行为确实很奇怪. 以下示例与标准指针完美配合. 但是,使用std::shared_ptr会导致分段错误. (请参阅下面的回溯) 我知道,从多个线程访问std::shared_ptr是不安全的,因此我正在使用原子操作.即使是经典的锁也无法解决问题. 我将gcc version 6.3.0 20170406 (Ubuntu 6.3.0- ..
发布时间:2020-09-13 19:26:23 C/C++开发

为什么std :: shared_ptr使用原子cpu操作

我在理解为什么shared_ptr使用原子cpu指令时遇到问题...我无法弄清原因,因为它不是线程安全的. 有人可以解释一下吗. 如果您想知道我是怎么知道它使用原子构造的:有一个C ++剪辑,赫伯和安德烈(Jerb and Andrei)谈论它,但是他们从未提及它的原因. 解决方案 shared_ptr的任何实例都是多线程安全的.它指向的数据不是多线程安全的.参见此. 原子指令 ..
发布时间:2020-09-13 19:23:59 C/C++开发

为什么unique_ptr和shared_ptr不会使它们的构造指针无效?

注意:这是一个 API设计问题 ,出于问题的考虑,该设计基于unique_ptr和share_ptr的构造函数的设计,但是并不打算提出对当前规范的任何更改. 尽管通常建议使用make_unique和make_shared,但unique_ptr和shared_ptr都可以由原始指针构造. 两者都按值获取指针并进行复制.两者都允许(即:不阻止)继续使用构造函数中传递给它们的原始指针. ..
发布时间:2020-09-06 00:15:48 C/C++开发

名称空间"std"中没有名为"shared_ptr"的类型

希望这对其他人有帮助 尝试使用Cedar BDD编译iOS项目失败,并在名称空间"std"错误消息中没有名为"shared_ptr"的类型. 显然这是一个C ++错误,但无法理解为什么Xcode使用的C ++库没有定义;直到我发现目标的构建设置提供了两个库可供选择,才定义了shared_ptr类型 libstdc ++(默认编译器) libc ++ 解决方案 选择libc + ..
发布时间:2020-08-01 18:54:12 其他开发

明确删除shared_ptr

一个简单的问题:是否允许您自己明确删除boost::shared_ptr?你应该吗? 澄清,我并不是说删除shared_ptr持有的指针.我的意思是实际的shared_ptr本身.我知道大多数人建议不要这样做,所以我只是想知道是否可以明确地做到这一点. 解决方案 您的问题不清楚.如果动态分配了shared_ptr,则可以随时随地允许它delete. 但是,如果您要问是否允许删除 ..
发布时间:2020-07-29 21:36:47 C/C++开发

Boost :: process输出空白行

我正在开发一个应用程序,需要根据用户输入启动和停止各种不同的可执行文件.我希望我的“核心"程序在这些可执行文件运行时能正常运行,即不要等待它们在理论上是无限的终止.除此之外,我还需要能够接收std_out并将std_in发送到这些可执行文件. 目前,我已经建立了一个具有流程管理器类的地方: class ProcessManager { private: std::vector ..
发布时间:2020-07-18 20:39:43 C/C++开发

如何减少很多包装类的实现代码?

我正在开发带有一些类的库,我们称它们为C1, C2 and ... Cn.这些类中的每一个都实现一些接口,即I1, I2, ... Im.(n> m).库中对象之间的关系很复杂,我必须 提供一些API,供我的图书馆用户使用智能指针访问这些对象. 经过一些讨论,我发现将共享指针返回给库用户不是一个好主意,因为在那种情况下,我不能确保可以在我的库的内存中精确地删除该对象.返回弱指针有相同的问题, ..
发布时间:2020-07-14 02:19:25 C/C++开发

是否有诸如weak_ptr之类的东西无法锁定(提升为shared_ptr)?如果没有,为什么?

也许以前有人问过这个问题,但我从未找到满意的答案.另外,为简单起见,假设我在谈论单线程应用程序. 所以,我听到过很多次,如果您有一个不拥有并且其使用寿命可以保证的对象,则应该引用它带有原始指针.对象的所有者将使用unique_ptr,并根据需要分发原始指针. 但是,如果对象是非所有者,并且生存期不能保证 ,该怎么办?然后可以使用weak_ptr,是的.但是,随后任何人都可能会收到一个w ..
发布时间:2020-07-14 02:19:21 C/C++开发

shared_ptr的周期性依赖关系问题是什么?

我了解了共享指针,并了解了如何使用.但是我从来没有理解共享指针的循环依赖问题以及弱指针如何解决这些问题.有人可以清楚地解释这个问题吗? 解决方案 问题并不复杂.让-->表示共享指针: The rest of the program --> object A --> object B ^ | ..
发布时间:2020-07-14 02:19:16 C/C++开发