在C++中返回空状态(NULL)的对象,而不返回指针
Return object with empty state (NULL) in C++ without returning a pointer
在DOM(文档对象模型)规范中,接口Node有一个方法:
Node GetChild();
它指出,如果节点没有子节点,则返回值为NULL。在不返回指向子节点的指针的情况下,在C++中实现此方法的正确方法是什么。(更好地防止内存泄漏)
建议:
具有属性
bool is_null_;
并重载运算符bool()以返回此值。
Node child = node.GetChild();
if (child) { ... }
现在稍等,但Library Fundamentals TS将提供std::experimental::optional
。
否则,如果可以使用具有类似语义的boost::optional
。
你可以像这样使用它:
using std::experimental::optional;
optional<Node> GetChild();
auto child = node.GetChild();
if (child) {
const Node& childNode = child.value();
} else {
std::cerr << "parent had no child" << std::endl;
}
boost::optional
这样的东西将帮助您:http://www.boost.org/doc/libs/1_56_0/libs/optional/doc/html/index.html
相关文章:
- 如何返回对象C++的数组
- 如何使用std::min和std::less返回对象
- 如何通过引用返回对象
- 如何安全地从 DLL 调用返回对象
- 如何在不销毁对象的情况下返回对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- 使用返回对象的函数处理错误
- 何时返回指针与返回对象的一般经验法则?
- 如何使用运算符+重载函数正确返回对象?
- C++,class,一个返回对象的函数
- 运算符的返回对象 = C++ 中的重载
- 从队列返回对象的最快方法,但前提是队列有它
- 如何使用条件表达式返回对象指针?
- 使用构造函数从函数返回对象
- 隐式转换函数的返回对象时是否会影响性能?
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 按值和堆栈大小限制返回对象
- 我应该如何从函数返回对象?
- c++:何时传递指针与返回对象
- 返回对象会丢失属性