Задать вопрос
@timkin1

Как вернуть ссылку на объект?

Здравствуйте!
Стоит задача применения сразу двух методов к одному объекту класса. Например, имеется объект с класса Complex. Необходимо, чтобы подобная конструкция работала корректно: c.sum(a).sub(b). Как я понимаю, необходимо, чтобы метод sum возвращал ссылку на объект, чтобы второй метод корректно применился.

Прошу пояснить как это сделать. Возможно ли это реализовать без помощи создания временного объекта, то есть вернуть сразу ссылку на обновленный объект c?

Заранее спасибо!
  • Вопрос задан
  • 754 просмотра
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++
    12 месяцев
    Далее
  • Академия Эдюсон
    Разработчик игр на Unreal Engine + ИИ
    9 месяцев
    Далее
  • Stepik
    Профессия: Разработчик C++ (Junior)
    2 месяца
    Далее
Решения вопроса 1
0xD34F
@0xD34F
Делайте return *this в конце нужных методов. Например:

class XXX {
  double val;

public:
  XXX(double v) {
    val = v;
  }

  XXX& add(double v) {
    val += v;
    return *this;
  }

  XXX& sub(double v) {
    val -= v;
    return *this;
  }

  friend std::ostream& operator <<(std::ostream &os, const XXX &x) {
    return os << x.val;
  }
};

...

std::cout << XXX(5).sub(1).add(2).sub(3).add(4) << endl; // 7
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы