C ++, представляющий необязательные объекты

у меня есть C ++ проект. Я работаю над проектом, чтобы научиться создавать полуреалистичную программу на C ++. Он загружает контент рекурсивно с веб-сайта.

Каждая загрузка имеет URL-адрес для загружаемого контента, а также URL-адрес для реферера (или URL-адрес страницы, с которой был извлечен контент).

Всегда есть реферер, если это не самый первый URL. Я обманывал и просто рассматривал первый URL как своего собственного реферера. Я недавно изменил класс URL, чтобы иметь пустое (или пустое) представление. Это похоже на взлом.

Есть ли способ представить необязательные объекты в C ++ без:

  • Используя указатели?
  • Трата места для недопустимого объекта?
  • или сделать «пустую» версию объекта?

6

Решение

Вы можете использовать boost :: необязательный. boost — уважаемая сторонняя библиотека; часто рассматривается как прототип для новых функций stl: см. ответ Ральфа std :: option доступен с новым C ++.

Увидеть http://www.boost.org/

5

Другие решения

Использовать std::optional шаблон, если у вас есть компилятор C ++ 14. Если нет, вы можете использовать boost::optional или же std::unique_ptr, Вы не можете избежать как использования указателей, так и траты места на недопустимый объект. std::optional будет содержать необязательный объект, std::unique_ptr будет явно указывать на это.

5

По вопросам рекламы [email protected]