簡體   English   中英

在C ++中返回具有空狀態(NULL)的對象而不返回指針

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

DOM (文檔對象模型)規范中,接口Node有一個方法:

Node GetChild();

它聲明如果Node沒有子節點,則返回值為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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM