在DOM(文档对象模型)规范中,接口Node有一个方法:
Node GetChild();
Run Code Online (Sandbox Code Playgroud)
它声明如果Node没有子节点,则返回值为NULL.在没有返回指向子节点的指针的情况下,在C++中实现此方法的正确方法是什么.(最好防止内存泄漏)
建议:
有一个属性
bool is_null_;
Run Code Online (Sandbox Code Playgroud)
和超负荷运营商布尔()返回该值.
Node child = node.GetChild();
if (child) { ... }
Run Code Online (Sandbox Code Playgroud)
现在稍等一下,但是图书馆基础知识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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |