6

我有一个C++ 项目。我从事这个项目是为了自学用 C++ 构建一个半现实的程序。它从网站递归下载内容。

每个下载都有一个用于下载内容的 URL,以及一个用于引用者的 URL(或从中提取内容的页面的 URL)。

除非它是第一个 URL,否则总会有一个引荐来源网址。我一直在作弊,只是将第一个 URL 视为它自己的引荐来源网址。我最近将 URL 类更改为具有空白(或空)表示。这感觉就像一个黑客。

有没有办法在 C++ 中表示可选对象,而无需:

  • 使用指针?
  • 为无效对象浪费空间?
  • 或制作对象的“空白”版本?
4

2 回答 2

5

你可以使用 boost::optional。boost 是备受推崇的 3rd 方库;通常被视为新 stl 函数的原型:请参阅 Ralph 的答案 std::optional 可用于新 C++。

http://www.boost.org/

于 2013-06-07T12:48:01.537 回答
5

std::optional如果您有 C++14 编译器,请使用该模板。如果没有,您可以使用boost::optionalor std::unique_ptr。您无法避免同时使用指针和为无效对象浪费空间。std::optional将包含可选对象,std::unique_ptr显然会指向它。

于 2013-06-07T12:48:59.370 回答