草庐IT

atomic_shared_ptr

全部标签

C++ std::shared_ptr 用法和信息

我正在尝试使用std::shared_ptr在我的代码中。我已经看到关于这个主题还有其他问题,但我仍然遇到编译器错误。我有正确版本的gcc和设置吗?我做了什么:我曾尝试分别使用两个头文件编译我的代码—和但在这两种情况下仍然会出现以下错误。我使用的gcc版本是gcc--versiongcc(GCC)4.3.2当我包含时我使用的标题std::shared_ptr和我使用的标题std::tr1::shared_ptr?这是正确的吗?我已将shared_ptr设置如下:std::shared_ptrptr_A=shared_ptr(newA());我得到的错误如下:src/WH.cxx:156

C++ std::shared_ptr 用法和信息

我正在尝试使用std::shared_ptr在我的代码中。我已经看到关于这个主题还有其他问题,但我仍然遇到编译器错误。我有正确版本的gcc和设置吗?我做了什么:我曾尝试分别使用两个头文件编译我的代码—和但在这两种情况下仍然会出现以下错误。我使用的gcc版本是gcc--versiongcc(GCC)4.3.2当我包含时我使用的标题std::shared_ptr和我使用的标题std::tr1::shared_ptr?这是正确的吗?我已将shared_ptr设置如下:std::shared_ptrptr_A=shared_ptr(newA());我得到的错误如下:src/WH.cxx:156

c++ - unique_ptr VS auto_ptr

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:std::auto_ptrtostd::unique_ptrWhatC++SmartPointerImplementationsareavailable?假设我有这个struct:structbar{};当我像这样使用auto_ptr时:voidfoo(){auto_ptrmyFirstBar=newbar;if(){auto_ptrmySecondBar=myFirstBar;}}然后在auto_ptrmySecondBar=myFirstBar;C++将所有权从myFirstBar转移到mySecondBa

c++ - unique_ptr VS auto_ptr

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:std::auto_ptrtostd::unique_ptrWhatC++SmartPointerImplementationsareavailable?假设我有这个struct:structbar{};当我像这样使用auto_ptr时:voidfoo(){auto_ptrmyFirstBar=newbar;if(){auto_ptrmySecondBar=myFirstBar;}}然后在auto_ptrmySecondBar=myFirstBar;C++将所有权从myFirstBar转移到mySecondBa

c++ - 与智能指针(intrusive_ptr)一起使用的抽象基类-处理继承,多态性,可克隆性以及从工厂方法返回

要求我正在编写一个名为RCObject的类,它表示“引用计数对象”;RCObject类应该是抽象的,用作框架的基类(EC++3项目7);应该禁止在堆栈上创建RCObject子类的实例(MEC++1项目27);[添加:][假定Bear是RCObject的具体子类][这里的C.E.表示编译错误]Bearb1;//TriggersC.E.(byusingMEC++1Item27)Bear*b2;//NotallowedbutnowaytotriggerC.E.intrusive_ptrb3;//RecommendedBear*bs1=newBear[8];//TriggersC.E.cont

c++ - 与智能指针(intrusive_ptr)一起使用的抽象基类-处理继承,多态性,可克隆性以及从工厂方法返回

要求我正在编写一个名为RCObject的类,它表示“引用计数对象”;RCObject类应该是抽象的,用作框架的基类(EC++3项目7);应该禁止在堆栈上创建RCObject子类的实例(MEC++1项目27);[添加:][假定Bear是RCObject的具体子类][这里的C.E.表示编译错误]Bearb1;//TriggersC.E.(byusingMEC++1Item27)Bear*b2;//NotallowedbutnowaytotriggerC.E.intrusive_ptrb3;//RecommendedBear*bs1=newBear[8];//TriggersC.E.cont

c++ - 标准 C++11 是否保证 `volatile atomic<T>` 具有两种语义( volatile + 原子)?

众所周知,std::atomic和volatile是不同的东西。有两个主要区别:两个优化可以用于std::atomica;,但不能用于volatileinta;:融合操作:a=1;a=2;可以由a=2;上的编译器替换不断传播:a=1;local=a;可以由a=1;local=1;上的编译器替换跨原子/volatile操作的普通读/写重新排序:为volatileinta;任何volatile读/写操作都不能重新排序。但是附近的普通读/写仍然可以围绕volatile读/写重新排序。为std::atomica;基于用于原子操作的内存屏障限制附近普通读/写的重新排序a.load(std::me

c++ - 标准 C++11 是否保证 `volatile atomic<T>` 具有两种语义( volatile + 原子)?

众所周知,std::atomic和volatile是不同的东西。有两个主要区别:两个优化可以用于std::atomica;,但不能用于volatileinta;:融合操作:a=1;a=2;可以由a=2;上的编译器替换不断传播:a=1;local=a;可以由a=1;local=1;上的编译器替换跨原子/volatile操作的普通读/写重新排序:为volatileinta;任何volatile读/写操作都不能重新排序。但是附近的普通读/写仍然可以围绕volatile读/写重新排序。为std::atomica;基于用于原子操作的内存屏障限制附近普通读/写的重新排序a.load(std::me

c++ - 返回 shared_ptr 时如何实现协变返回类型?

usingnamespaceboost;classA{};classB:publicA{};classX{virtualshared_ptrfoo();};classY:publicX{virtualshared_ptrfoo();};返回类型不是协变的(因此它们也不是合法的),但如果我使用原始指针代替它们就会是。解决此问题的常用习语是什么(如果有的话)? 最佳答案 我认为解决方案基本上是不可能的,因为协方差取决于与智能指针不兼容的指针算法。当Y::foo返回shared_ptr对于动态调用者,它必须转换为shared_ptr使用前

c++ - 返回 shared_ptr 时如何实现协变返回类型?

usingnamespaceboost;classA{};classB:publicA{};classX{virtualshared_ptrfoo();};classY:publicX{virtualshared_ptrfoo();};返回类型不是协变的(因此它们也不是合法的),但如果我使用原始指针代替它们就会是。解决此问题的常用习语是什么(如果有的话)? 最佳答案 我认为解决方案基本上是不可能的,因为协方差取决于与智能指针不兼容的指针算法。当Y::foo返回shared_ptr对于动态调用者,它必须转换为shared_ptr使用前