shared-ptr相关内容
我可能有一些错误的方面,这确实是我第一次特别处理共享指针. 我正在遍历一棵树.我的树由一个链表组成,带有一个共享指针向量,这些指针表示每个节点的所有子代.为了遍历,我(首先)尝试这样做: //-------------------------------------------------------------- void setupMesh(){ Mesh mesh;
..
在尝试使用要注册到观察者的类中的共享指针时,我遇到了问题. Observer.hpp class Observer { virtual void update() = 0; } Consumer.hpp class Consumer : public Observer { virtual void update() override; } Consumer.cpp
..
std::shared_ptr::unique()的技术问题是什么,它是C ++ 17中弃用的原因? 根据 cppreference.com ,std::shared_ptr::unique()在C ++ 17中已弃用,因为 从C ++ 17开始不推荐使用此函数,因为use_count仅是多线程环境中的近似值. 我理解这对于use_count() > 1是正确的:当我持有对该引用
..
BI正在我的代码中使用enable_shared_from_this,但我不确定其用法是否正确.这是代码: class A: public std::enable_shared_from_this { public: void foo1() { auto ptr = shared_from_this(); } }; class B:publi
..
我一直在浏览 Clang源代码,并且找到了以下代码段: void CompilerInstance::setInvocation( std::shared_ptr Value) { Invocation = std::move(Value); } 我为什么要std::move和std::shared_ptr? 在共享资源上转移所有
..
我想测试一个使用资源Foo的应用程序Thud.它不会拥有具体的对象,但是将具有指向抽象资源接口的指针(此处为IFoo).在生产中,我将为它提供实际的资源实现(FooImpl),而对于单元测试,我想发送一个指向模拟资源的指针.我该怎么办?我试图编写最少的代码只是为了指出要点, class IFoo { public: virtual bool Foo(bool) = 0; }; cl
..
我实现了一个功能,在该功能中,身份被授予我,而我无法控制.它返回std::shared_ptr.在该函数中,我分配了任意数量的内存,并通过shared_ptr返回对其的访问. 我的内存分配是通过new unsigned char[123]完成的.问题是valgrind检测到new和delete变体的用法之间不匹配.当我使用new[](unsigned)分配内存时,sh
..
我在程序中遇到设计问题. 我必须管理作为根ChainDescriptor一部分的Nodes对象. 基本上看起来像这样: class ChainDescriptor { public: ~ChainDescriptor() { //delete the nodes in nodes... } void addNode(Node *);
..
我知道在一个模块中添加某些内容并在另一个模块中删除它通常会在VC ++中引起问题.不同运行时的问题.如果我没记错的话,混合使用静态链接的运行时模块和/或动态链接的版本控制不匹配的模块都可能搞砸. 但是,跨模块使用VC ++ 2008的std :: tr1 :: shared_ptr是否安全? 由于只有一个版本的运行时甚至不知道什么是shared_ptr,因此静态链接是我唯一的危险(目前
..
我刚刚意识到阅读本页时,std :: shared_ptr的构造函数只有一个指针参数也不例外. 因此,以下代码包含可能的内存泄漏: std::shared_ptr p3 (new int); 原因是可能发生两种分配: 调用构造函数之前的第一个 shared_ptr构造函数中的第二个(例如,在VS 2012中会发生这种情况) 这里有两个问题: 是真的,如
..
GenericStack.h #ifndef _GENERIC_STACK_TROFIMOV_H_ #define _GENERIC_STACK_TROFIMOV_H_ #include class GenericStack { struct StackNode { std::shared_ptr _data; St
..
想象一下,有一个共享指针向量 typedef vector > PointerVector; 还有一个B类,该B类还具有一个共享指针向量,并且该方法将已经取消引用的共享指针推回到该向量中. ClassB { public: void add(classA &ref); private: PointerVector vec
..
嗨,我正在尝试使用智能指针实现简单的单链接列表,这是到目前为止,我选择使用C ++的shared_ptr,但我读到unique_ptr更适合这种情况,但是,我没有我真的不知道如何遍历列表(即currentNode = currentNode-> next)以到达列表的末尾,以便使用unique_ptr插入元素.这是我到目前为止的代码: template class
..
说我有一个shared_ptr,带有一个自定义分配器和一个自定义删除器. 我在标准中找不到任何内容讨论删除器的存储位置:它没有说自定义分配器将用于删除器的内存,也没有说它是不会. 这是未指定的,还是我只是缺少一些东西? 解决方案 util.smartptr.shared.const/9在C ++ 11中: 效果:构造一个拥有对象p和删除器d的shared_ptr对象.第二
..
在C ++ 11中,std::shared_ptr具有四个构造函数,可以将其传递给类型为D的删除对象d.这些构造函数的签名如下: template shared_ptr(Y * p, D d); template shared_ptr(Y * p, D d, A a); template
..
我的想法是,我想要一个由 std :: shared_ptr 包装的类,仍然可以使用 就像它们不是指针一样,例如,在我的类 中定义的operator =仍然可以在我的类被 std :: shared_ptr 包装之后使用。 例如 template class shared_ptr_proxy:public std :: shared_ptr {
..
假设你有一个包含所有顶点向量的图结构。此外,你有一个结构/类的顶点。这个顶点包含所有邻居的向量(邻接列表)。 我的问题是:我应该使用哪种类型的指针/智能指针来表示这个图? / p> 对于二叉树,我读过,对于父节点,您应该使用原始指针。因为一个节点不拥有它的父节点。二叉树的子节点可以用std :: unique_ptr表示,因为节点拥有子节点的所有权。 但是在一个图中,多个节点可能
..
如何在GDB中访问std :: tr1 :: shared_ptr的目标。这不起作用: (gdb)p sharedPtr-> variableOfTarget 如果我尝试使用指针对象本身( p sharedPtr ),我得到如下所示: $ 1 = std :: tr1 :: shared_ptr(count 2)0x13c2060 使用普通指针我
..
我有如下测试程式: #include #包含 使用namespace std; int main() { shared_ptr si(new int(5)); 返回0; $ / code> 调试它: (gdb)l 1#include 2#包含
..
我已经看到关于此主题的其他一些问题,但仍未找到答案 - 我想我错过了一些东西: 我定义了两个简单的测试类: class TestBase { public : TestBase(){}; 〜TestBase(){}; 保护: 内联虚拟int getInt() { return 0; } }; $ b $ class TestDerived:
..