草庐IT

weak_ptr_cast

全部标签

c++ - 显式删除 shared_ptr

这里有一个简单的问题:是否允许您自己显式删除boost::shared_ptr?你应该过吗?澄清一下,我不是说删除shared_ptr持有的指针。我的意思是实际的shared_ptr本身。我知道大多数人建议不要这样做,所以我只是想知道是否可以明确地这样做。 最佳答案 你的问题不清楚。如果您已经动态分配了shared_ptr,那么您当然可以随时delete它。但是,如果您要问是否允许删除shared_ptr管理的任何对象,那么答案是……这取决于。如果shared_ptr::unique返回true,则调用shared_ptr::res

c++ - 显式删除 shared_ptr

这里有一个简单的问题:是否允许您自己显式删除boost::shared_ptr?你应该过吗?澄清一下,我不是说删除shared_ptr持有的指针。我的意思是实际的shared_ptr本身。我知道大多数人建议不要这样做,所以我只是想知道是否可以明确地这样做。 最佳答案 你的问题不清楚。如果您已经动态分配了shared_ptr,那么您当然可以随时delete它。但是,如果您要问是否允许删除shared_ptr管理的任何对象,那么答案是……这取决于。如果shared_ptr::unique返回true,则调用shared_ptr::res

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++ - 如何在我的 C++ 代码中避免 dynamic_cast?

假设我有以下类结构:classCar;classFooCar:publicCar;classBarCar:publicCar;classEngine;classFooEngine:publicEngine;classBarEngine:publicEngine;让我们也给Car一个句柄来处理它的Engine。FooCar将使用FooEngine*创建,BarCar将使用BarEngine*创建。有没有办法安排事情,以便FooCar对象可以调用FooEngine的成员函数而无需向下转换?这就是为什么类结构是现在这样布置的原因:所有Car都有一个Engine。此外,FooCar只会使用Fo

c++ - 如何在我的 C++ 代码中避免 dynamic_cast?

假设我有以下类结构:classCar;classFooCar:publicCar;classBarCar:publicCar;classEngine;classFooEngine:publicEngine;classBarEngine:publicEngine;让我们也给Car一个句柄来处理它的Engine。FooCar将使用FooEngine*创建,BarCar将使用BarEngine*创建。有没有办法安排事情,以便FooCar对象可以调用FooEngine的成员函数而无需向下转换?这就是为什么类结构是现在这样布置的原因:所有Car都有一个Engine。此外,FooCar只会使用Fo

c++ - 如何在 C++ 中使用 reinterpret_cast?

我知道C++中的reinterpret_cast可以这样使用:floata=0;intb=*reinterpret_cast(&a);但是为什么不能直接施法呢?floata=0;intb=reinterpret_cast(a);error:invalidcastfromtype'float'totype'int' 最佳答案 全部reinterpret_cast确实是允许您以不同的方式读取您传递的内存。你给它一个内存位置,并要求它读取该内存,就好像它是你要求它读的一样。这就是为什么它只能与指针和引用一起使用。我们以这段代码为例:#in

c++ - 如何在 C++ 中使用 reinterpret_cast?

我知道C++中的reinterpret_cast可以这样使用:floata=0;intb=*reinterpret_cast(&a);但是为什么不能直接施法呢?floata=0;intb=reinterpret_cast(a);error:invalidcastfromtype'float'totype'int' 最佳答案 全部reinterpret_cast确实是允许您以不同的方式读取您传递的内存。你给它一个内存位置,并要求它读取该内存,就好像它是你要求它读的一样。这就是为什么它只能与指针和引用一起使用。我们以这段代码为例:#in