smart-pointers相关内容
这个程序有什么问题? #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
..
..
我正在尝试将 QScopedPointers 存储在 QList 中. 我找到了这条评论 也可以使用 QList >.– Kuba Ober 2014 年 1 月 14 日 18:17 (对此答案的第一条评论:https://stackoverflow.com/a/21120575/3095014)p> 和这篇文章 https://forum.qt.io/topic/59338
..
我正在使用 c++11 智能指针重写应用程序. 我有一个基类: A 类 {}; 还有一个派生类: class B : public A {上市:诠释 b;}; 我有另一个类包含带有 A 或 B 对象的向量: C 类 {上市:向量>五;}; 用 A(基类)对象构造 C 没有问题,但是如何用 B(派生类)对象填充它? 我正在尝试这个: for(in
..
对于 C++ 新手来说,const 成员函数被允许在类引用的对象上调用非 const 方法(通过指针或引用)通常很困惑.例如,以下是完全正确的: class SomeClass{类 SomeClassImpl;SomeClassImpl * impl_;//PImpl 成语上市:无效 const_method() 常量;};结构 SomeClass::SomeClassImpl{void non
..
我使用 C++ 作为应用主干,使用 Objective-C 作为 GUI,这很好. 但是在将这些代码混合到 Objective-C++(.mm 文件)中时,我有几个问题: 1.我可以将 STL 容器与 Objective-C 或 Cocos2D 对象混合使用吗? 例如在 Objective-C 标头中,我可以执行以下操作吗? #include #include
..
假设我有一个类,其方法返回 shared_ptr. 按引用或按值返回它可能有哪些好处和坏处? 两个可能的线索: 早期对象销毁.如果我通过 (const) 引用返回 shared_ptr,则引用计数器不会增加,因此我会承担在以下情况下删除对象的风险它在另一个上下文(例如另一个线程)中超出范围.这个对吗?如果环境是单线程的,是否也会出现这种情况? 成本.价值传递当然不是免费的.是否
..
谁能解释上面提到的类型之间的区别以及一些示例用法以清楚地解释两者之间的区别? 任何帮助将不胜感激!注意:这个问题是 this other question 解决方案 BSTR 是 COM 使用的字符串数据类型. _bstr_t 是一个像智能指针一样工作的包装类,因此当变量被销毁或超出范围时,它将释放分配的内存._bstr_t 还具有引用计数,每次按值传递 _bstr_t 变量时
..
我正在使用 android NDK r8d 和 eclipse Juno.我正在尝试在原生 android 项目中编译使用 C++11 内容的 C++ 代码,例如 mutex、lock_guard、shared_ptr 等在日食中. 我收到如下错误: “错误:‘shared_ptr’不是‘std’的成员" “致命错误:互斥锁:没有这样的文件或目录" 我在这里遇到了类似的问题
..
我不知道如何在我的 Android 项目中使用共享指针.我在带有 Android NDK r8d 的 Mac OS X 上使用最新的 Eclipse ADT. 这是我的 Android.mk 文件中的内容: LOCAL_PATH := $(call my-dir)包括 $(CLEAR_VARS)LOCAL_CPPFLAGS := -std=c++11LOCAL_MODULE := 本机
..
我使用一些 using 语句和 unique_ptr 来处理 OpenSSL,如 在另一个问题中建议.否则,代码会变得非常丑陋,而且我不太喜欢 goto 语句. 到目前为止,我已经尽可能地更改了我的代码.以下是我使用的示例: using BIO_ptr = std::unique_ptr;使用 X509_ptr = std::unique_ptr;使用 EVP_PKEY_ptr = std
..
嗨,我正在尝试使用智能指针实现一个简单的单链表,这是我到目前为止所拥有的,我选择使用 C++ 的 shared_ptr,但我读到 unique_ptr 更适合这种情况,但是,我不真的不知道您将如何遍历列表(即 currentNode = currentNode->next)以到达列表的末尾,以便使用 unique_ptr 插入一个元素.这是我到目前为止的代码: template 类链表;模板 类
..
我正在尝试实现一个链表来理解 Rust 中的智能指针.我定义了一个 Node: 使用 std::{cell::RefCell, rc::Rc};结构节点{价值:i32,下一个:Option>,} 并像迭代一样 fn iterate(node: Option>>) ->Vec i32 ;{让 mut p = 节点;让 mut 结果 = vec![];环形 {
..
和 Boost 一样,C++11 提供了一些用于转换 shared_ptr 的函数: std::static_pointer_caststd::dynamic_pointer_caststd::const_pointer_cast 然而,我想知道为什么 unique_ptr 没有等效函数. 考虑以下简单示例: class A { virtual ~A();... }B 类:公共 A {
..
将派生类型的 shared_ptr 传递给采用基类型 shared_ptr 的函数的最佳方法是什么? 我通常通过引用传递 shared_ptr 以避免不必要的复制: int foo(const shared_ptr& ptr); 但是如果我尝试做类似的事情,这将不起作用 int foo(const shared_ptr& ptr);...shared_ptrbar = make_sha
..
换句话说,实现如何跟踪计数? 是否有一个类似地图的对象可以被所有 shared_ptr 实例访问,其键是指针的地址,值是引用的数量?如果我必须实现一个 shared_ptr,这是我想到的第一个想法. 在这些引用计数智能指针的情况下,是否有可能发生内存泄漏?如果是这样,我该如何避免它们? 解决方案 我见过两种不同的非侵入式方法来解决这个问题: 智能指针分配一个小的内存块来包
..
就在最近,我将项目的语言从 C 切换为使用 C++.对于 C,我使用了 malloc,然后我检查 malloc 是否成功,但是对于 C++,我使用“new"来分配内存,我想知道您通常如何检查内存分配失败. 从我的谷歌搜索中,我没有看到如下所示. char *buf = new (nothrow)char[10]; 我还看到了以下内容. try{} catch(bad_alloc&) {
..
我经常需要在 C++ 中处理动态分配的数组,因此依赖 Boost 来处理 scoped_array、shared_array 等.通读 Stroustrup 的 C++11 FAQ 和 C++11 参考 Wiki,我找不到 C++11 提供的这些动态数组包装器的合适替代品标准.有什么我忽略的地方,还是我必须继续依赖 Boost? 解决方案 unique_ptr 有一个特化,比如 uniqu
..
我正在考虑使用 boost::weak_ptr 来实现一个对象池,这样当没有人使用其中一个对象时,它们就会被回收.不过,我担心的是,它是一个多线程环境,似乎在最后一个 shared_ptr 到超出范围的对象与从 weak_ptr 构造的新 shared_ptr 之间存在竞争条件.通常,您会使用锁或其他东西来保护此类操作;然而,这里的重点是您不知道 shared_ptr 何时可能超出范围. 我
..
C++11 是否具有与 boost::intrusive_ptr 等效的东西? 我的问题是我的 C++ 代码有一个 C 风格的界面.接口的两边都可以使用C++,但是出于兼容性的考虑,需要暴露C接口.我不能使用 std::shared_ptr 因为我必须通过两个(或更多)智能指针来管理对象.我无法找到类似 boost::intrusive_ptr 的解决方案. 解决方案 c++11
..