在C++中返回空状态(NULL)的对象,而不返回指针

Return object with empty state (NULL) in C++ without returning a pointer

本文关键字:返回 对象 指针 NULL C++ 状态      更新时间:2023-10-16

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