[英]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.