Есть ли способ изменить 'operator->' так, чтобы 'z-> im' возвращал мнимую часть комплексного числа - PullRequest
0 голосов
/ 17 июня 2020

У меня есть структура Cmplx, которая моделирует комплексные числа.

class Cmplx{
  double x;
  double y;
 public:
  Cmplx(int X, int Y){x = X; y = Y;}
  double& operator->(...){...}
}

Мне нужно реализовать оператор так, чтобы

int main(){
Cmlpx z(1,2);
z->im = 5;
z->re = 2;
}

менял мое комплексное число на (2,5); Я знаю, как это сделать, когда im и re являются строками, но понятия не имею, как это сделать вот так.

1 Ответ

2 голосов
/ 17 июня 2020

Таким образом вы можете злоупотребить operator->:

struct ComplexRef
{
    ComplexRef* operator->() { return this;}
    double& re;
    double& im;
};

class Cmplx{
  double x;
  double y;
public:
  Cmplx(int X, int Y){x = X; y = Y;}
  ComplexRef operator->(){ return {x, y}; }
};

Demo

Перегрузка operator -> должна либо возвращать необработанный указатель, либо возвращать объект (по ссылке или по значению), для которого в свою очередь перегружен operator ->.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...