Я не могу опубликовать свой точный код, но у меня есть класс Mike
, где я хочу, чтобы он содержал переменную-член пользовательского типа объекта Bob
.Bob
не может быть установлено при построении Mike
, но я хочу, чтобы оно было установлено позже, когда вызывается метод установки.Я пытаюсь использовать boost::optional<Bob>
для этого следующим образом:
class Mike
{
public:
void setBob(const Bob& bob)
{
m_bob = bob;
}
boost::optional<Bob> getBob() const
{
return m_bob;
}
private:
boost::optional<Bob> m_bob;
}
Это выдает ошибку:
error: use of deleted function ‘Bob& Bob::operator=(const Bob&)’
void assign_value ( argument_type val, is_not_reference_tag ) { get_impl() = val; }
Я также пытался заменить строку
m_bob = bob;
с
m_bob = boost::optional<Bob>(bob);
, но это приводит к почти идентичной ошибке.
Класс Bob
выглядит следующим образом:
class Bob
{
public:
Bob(const double value) : m_value(value)
{
}
private:
const double m_value;
};
Есть идеи, как правильно это сделать?