C ++代表可选对象

时间:2013-06-07 12:45:48

标签: c++ optional representation

我有C++ project。我在这个项目上工作,自学了如何用C ++构建一个半现实的程序。它从网站递归下载内容。

每次下载都有一个要下载的内容的URL,以及引荐来源的URL(或从中提取内容的页面的URL)。

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

有没有办法在没有的情况下用C ++表示可选对象:

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

2 个答案:

答案 0 :(得分:5)

你可以使用boost :: optional。 boost是备受尊重的第三方图书馆;通常被视为新stl函数的原型:请参阅Ralph的回答std :: optional可用于新的C ++。

请参阅http://www.boost.org/

答案 1 :(得分:5)

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