я был дан для реализации функции:нет функции согласования для вызова «»
"static double distanta (const Complex&, const Complex&);"
, возвращающие расстояние между двумя комплексными числами. Определение функции он находится внутри комплекса класса и я реализовал это так:
double Complex::distanta(const Complex &a, const Complex &b)
{
double x = a.real() - b.real();
double y = a.imag() - b.imag();
return sqrt(x * x + y * y);
}
Насколько я знаю, статическая функция может получить доступ только статические члены и мой класс имеет только
double _re;
double _im;
в качестве данных.
В основной функции я назвал его как:
#include <iostream>
#include "complex.h"
using namespace std;
int main()
{
Complex* firstComplexNumber;
firstComplexNumber = new Complex(81, 93);
cout << "Numarul complex este: " << *firstComplexNumber << endl;
Complex* secondComplexNumber;
secondComplexNumber = new Complex(31, 19);
cout << "Distanta dintre cele doua numere" <<endl << endl;
Complex::distanta(firstComplexNumber, secondComplexNumber);
return 0;
}
и ошибка, я получаю:
ошибка: нет соответствия функции для вызова «Complex :: distanta (комплекс * &, Комплекс * &) '
Не могли бы вы рассказать мне, что я делаю неправильно? Спасибо!
Является ли «Комплекс :: distanta» статическим методом? –
Можете ли вы опубликовать [SSCCE] (http://sscce.org), чтобы мы могли воспроизвести проблему? –
Вы передаете два экземпляра объекта статическому методу, поэтому для них не должно быть никаких проблем, если они открыты. – crush