@timkin1

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

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

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

Заранее спасибо!
  • Вопрос задан
  • 680 просмотров
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы