Посмотрите на этот код:
c.Add(a, b);
c.Display(); // <- Here
Вот о чем подумать: какое комплексное число вы здесь показываете?
Взгляните на свою Add
функцию. Обратите внимание, что вызов c.Add(a, b)
на самом деле не устанавливает c
равным сумме a
и b
. Вместо этого он по существу игнорирует c
(просмотрите код - обратите внимание, что вы никогда не читаете и не пишете какие-либо поля объекта-получателя), а затем генерирует новое комплексное число, равное a + b
. В результате, когда вы звоните c.Display()
, вы не печатаете сумму. Вместо этого вы берете c
, для которого никогда не инициализировались элементы данных, и распечатываете его значение.
Есть несколько различных стратегий, которые вы можете использовать, чтобы исправить это. По сути, я бы оглянулся назад на то, как вы определили Add
и другие функции-члены, которые вычисляют на комплексных числах. Если эти функции-члены не используют объект-получатель, рассмотрите либо
Создание их static
или свободных функций, чтобы они просто оперировали двумя аргументами, а не двумя аргументами плюс неявный аргумент this
, или
Сделайте так, чтобы они принимали ровно один параметр, при этом два комплексных числа используются как объект-получатель и параметр. Затем у вас есть выбор: заставить эти функции изменять получатель или возвращать новые значения.
Как только вы определились, как вы хотите решить эту проблему, вернитесь назад и посмотрите на код, который вы написали, чтобы добавить и напечатать значения. Вам может потребоваться ввести больше переменных, чтобы явно фиксировать суммы, различия и т. Д. Выполненных вами операций.
Надеюсь, это поможет!