Линия
cout << "Сумма" << result.add << endl; </p>
неверен, так как add
является методом, поэтому result.add
будет указателем на этот метод, а cout
не знает, как его обработать - что заставляет компилятор выплевывать его.
Измените строку на
cout << "The sum is ";
result.print();
cout << endl;
Вы должны сделать то же самое для линии
cout << "The difference is " << result.subtract << endl;
Что касается стиля кодирования, два метода перезаписывают существующее комплексное число. Возможно, иметь такую функцию было бы лучше
Complex &Complex::add (const Complex &op) {
r += op.r;
i += op.i;
return *this;
}
Это позволит вам связывать вместе сложения, а также просто добавлять комплексное число к существующему комплексному номеру.
Кроме того, вы можете сделать переменные класса r
и i
закрытыми. Для этого потребуется альтернативный конструктор:
Complex:Complex(double real, double imaginary) : r(real), i(imaginary) {};
Наконец, вы можете рассмотреть вопрос о перегрузке операторов - я уверен, что вы можете воспользоваться Google, чтобы найти разумное руководство.