Я пытаюсь понять, когда подходящее время для использования некоторых структур, которые поставляются с boost
, и возник вопрос о использовании boost::optional
со ссылкой.
Предположим, что у меня есть следующий класс, используя boost::optional
:
class MyClass {
public:
MyClass() {}
initialise(Helper& helper) {
this->helper = helper;
}
boost::optional<Helper&> getHelper() {
return helper;
}
private:
boost::optional<Helper&> helper;
}
Почему я должен использовать выше, а не:
class MyClass {
public:
MyClass() : helper(nullptr) {}
initialise(Helper& helper) {
this->helper = &helper;
}
Helper* getHelper() {
return helper;
}
private:
Helper* helper;
}
Они оба передают одно и то же намерение, т.е. что getHelper
может возвращать null
, и вызывающему все еще нужно проверить, был ли возвращен помощник.
Если вы используете только boost::optional
, если вам нужно знать разницу между "значением", nullptr
и "не значением"?