unique-ptr相关内容
我想知道为什么Make_Unique调用复制构造函数而不调用默认构造函数。 Node() { std::cout
..
无法理解此操作失败的原因? int *p = new int(10); std::unique_ptr ptr(p); // Below line gives compilation error. std::cout
..
如果我将智能指针(scoped_ptr、unique_ptr或shared_ptr)应用到具有自动存储持续时间(即存储在堆栈上)的对象上,会有问题吗?我假设不会像在两种情况下那样(有或没有智能指针),如果没有更多的指针指向它们,它们将被删除。指针本身始终具有自动存储持续时间,即,如果超出范围,它们将被删除。 推荐答案 是,有一个问题(一个很大的问题):您正在使用智能指针做一些它们不是设
..
我(错误地)在我的程序中有以下作业: std::shared_ptr m_program; // in class m_program = std::make_unique(); // in method 当我发现这个时,我首先想知道为什么它会编译。原来shared_ptr对unique_ptr对象有一个特殊的移动赋值运算符。
..
我已经使用该文档在我的程序中创建了所有单例: http://erdani.com/publications/DDJ_Jul_Aug_2004_revised.pdf (如果有人想知道为什么是单例,它们都是工厂,其中一些存储有关如何创建实例的全局设置)。 每一个看起来都像这样: 声明: class SingletonAndFactory { static Singleton
..
这个程序有什么问题? #include #include 主函数(){std::vector>向量;诠释 x(1);std::unique_ptr;ptr2x(&x);vec.push_back(ptr2x);//这个小命令有一个恶性错误.返回0;} 错误: 在 c:\mingw\bin\../lib/gcc/mingw32/4.5.0/include/c++/min
..
我有两个集合和一个 a 元素的迭代器: set>一,乙;set>::iterator iter = 在 a 中找东西; 我想从a中移除iter所指向的元素,并插入到b中.是否可以?怎么样? 解决方案 好吧,我怀疑没有正常的方法可以做到这一点.但总有一个不正常的:)您可以执行以下操作: auto tmp = const_cast 好的,第一行违反了 set
..
我遇到了一个错误:在编译类似于下面的代码时调用'std::__1::unique_ptr >'的隐式删除的复制构造函数c++ -std=c++14 unique_ptr_vector.cpp -o main 这是一个简化版: 头文件'my_header.h': #include #include #include #include A类{
..
我有问题,我想创建指向 Base 对象向量的唯一指针.我想保留 Base 的这个向量子类(SubClass),但是初始化有问题,因为 Base 类是虚拟的. std::unique_ptr>baseVector = std::make_unique>();子类 newObject();baseVector->push_back(newObject); 解决方案 短版:你不想要一个指向 Bas
..
我知道派生类 unique_ptr 可能发生在多态类型需要基类 unique_ptr 的地方.例如,从函数返回时 unique_ptr一些函数(){return make_unique(new Derived());} 或作为参数传递给函数. //获取唯一指针的函数void someOtherFunction(unique_ptr&& ptr)//调用这个函数的代码someOtherFunc
..
..
std::unique_ptr 很好,但我发现在 DDD 或 gdb. 我正在使用作为 gcc 一部分的 gdb 漂亮打印机(例如,/usr/share/gcc-4.8.2/python/libstdcxx/v6/printers.py).这是可读性的一大胜利,例如: $ print pTeststd::unique_ptr包含 0x2cef0a0 但是,取消引用指针不起
..
以下函数无法编译: std::unique_ptr;富(){int* 答案 = 新 int(42);返回答案;}std::unique_ptr;酒吧(){返回新的int(42);} 我觉得这有点不方便.使 std::unique_ptr(T*) 显式的基本原理是什么? 解决方案 您不希望托管指针隐式地获取原始指针的所有权,因为这可能会导致未定义的行为.考虑一个函数 void f(
..
我使用一些 using 语句和 unique_ptr 来处理 OpenSSL,如 在另一个问题中建议.否则,代码会变得非常丑陋,而且我不太喜欢 goto 语句. 到目前为止,我已经尽可能地更改了我的代码.以下是我使用的示例: using BIO_ptr = std::unique_ptr;使用 X509_ptr = std::unique_ptr;使用 EVP_PKEY_ptr = std
..
有了 c++11,我在问自己是否可以替代 c++11 中的 boost::ptr_containers.我知道我可以使用例如一个 std::vector;>,但我不确定这是否是一个完整的替代品.处理这些情况的推荐方式是什么? 解决方案 他们确实解决了两个相似但不同的问题. 指针容器是一种将对象存储在容器中的方法,这些对象恰好是指向已分配内存而不是值的指针.他们尽其所能隐藏一个事实,即
..
嗨,我正在尝试使用智能指针实现一个简单的单链表,这是我到目前为止所拥有的,我选择使用 C++ 的 shared_ptr,但我读到 unique_ptr 更适合这种情况,但是,我不真的不知道您将如何遍历列表(即 currentNode = currentNode->next)以到达列表的末尾,以便使用 unique_ptr 插入一个元素.这是我到目前为止的代码: template 类链表;模板 类
..
我已经转换了以下链表结构 结构节点{下一个节点*;内部 v;}; 进入 c++11 版本 - 不使用指针. 结构节点{unique_ptr下一个;内部 v;}; 添加、删除元素和遍历工作正常,但是当我插入大约 100 万个元素时,在调用头节点的析构函数时会出现堆栈溢出. 我不确定我做错了什么. {节点 n;... 添加 10mill 元素}
..
我正在尝试编译发布在代码审查上的以下线程池程序以对其进行测试. https://codereview.stackexchange.com/questions/55100/platform-independant-thread-pool-v4 但我收到错误 threadpool.hpp:在成员函数‘std::future)(args)...))>中threadpool::enqueue
..
和 Boost 一样,C++11 提供了一些用于转换 shared_ptr 的函数: std::static_pointer_caststd::dynamic_pointer_caststd::const_pointer_cast 然而,我想知道为什么 unique_ptr 没有等效函数. 考虑以下简单示例: class A { virtual ~A();... }B 类:公共 A {
..
我遇到了一个错误:在编译类似于下面的代码时调用'std::__1::unique_ptr>'的隐式删除的复制构造函数c++ -std=c++14 unique_ptr_vector.cpp -o main 这是一个简化版本: 头文件'my_header.h': #include #include #include #include A类{上市:A() : n(0) {}A(int v
..