如何将boost::shared_ptr写为null
How to write boost::shared_ptr as null?
如何将默认构造的boost::shared_ptr作为空指针?这样做对吗:
boost::shared_ptr< ModuleStubSocket_C > socket_stub;
socket_stub = boost::shared_ptr< ModuleStubSocket_C >();
现在socket_stub为NULL吗?
boost::shared_ptr
默认构造为空指针,该指针本质上为null。请参阅stard_ptr默认构造函数的文档。
第二行是多余的。它再次调用相同的默认构造函数来创建一个临时空指针,然后将其分配给已经是空指针的socket_stub
。
只是:
socket_stub = nullptr;
应该对CCD_ 3起作用。我希望:
socked_stub = NULL;
用boost::shared_ptr
做这个把戏,但我不知道。boost::shared_ptr
在关于空指针的几个方面被破坏,这可能是其中之一。(IIRC,if ( someSharedPtr == NULL )
不起作用,这被认为是严重的,足以排除在我工作过的大多数地方使用boost::shared_ptr
。)
boost::shared_ptr<>
初始化为nullptr
。但是,如果您想将任何shared_ptr<>
重置回指向nullptr
,您可以调用例如
auto ptr = boost::shared<int>();
// some other code doing something with ptr
ptr.reset(); // ptr now points to NULL
// you can assign a new pointer too!
ptr.reset(&intvar); // ptr now points to the memory location of the intvar variable
相关文章:
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 为共享 ptr 向量实现复制 c'tor?
- C++中大多数/所有 setter 函数的参数是否应该写为常量引用?
- 将手写循环转换为标准库调用
- 引发异常:写访问冲突. temp 为 nullptr
- 将较大的整数写为二进制并读回它们会产生不好的结果
- 有没有更好的方法来为C++写这个?
- 我应该如何为包含动态数组的类编写所需的构造函数
- 从const ptr*转换为ptr*时出现问题
- 如果要测试,我是否应该将C 代码写为静态或动态库
- 如何使用ImageMagick Magick 将图像作为gif写为blob
- 在 C/C++ 中将非常大的 int(写为字符串)转换为二进制字符串
- 为什么非常量ptr不能隐式地将ptr转换为常量作为模板中的参数
- 如何将boost::shared_ptr写为null
- 如何在C++中将负数写为无符号文字
- 将字符写为C++字节
- 无法将 Uchar PTR 转换为 OpenCVsharp
- 如何创建 std::string 包装器,它将 ptr 保留为 std::string 和 ptr 到创建该包装器实例的
- N=2^x,如果为真就写为真.为什么是错的
- 函数PTR转换为带模板参数的函数