mi è stata data per implementare la funzione:alcuna funzione corrispondente per chiamata ''
"static double distanta (const Complex&, const Complex&);"
che restituiscono la distanza tra due numeri complessi. La definizione della funzione si trova all'interno del complesso di classe e mi hanno messo in atto in quel modo:
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);
}
Per quanto ne so una funzione statica può accedere solo i membri statici e la mia classe ha solo
double _re;
double _im;
come membri dei dati.
All'interno della funzione principale che ho definito come:
#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;
}
e l'errore che ottengo è:
errore: nessuna funzione di corrispondenza per la chiamata a 'Complex :: distanta (Complex * &, Complesso * &) '
Potrebbe dirmi per favore cosa sto facendo? Grazie!
'Complex :: distanta' è un metodo statico? –
Puoi pubblicare un [SSCCE] (http://sscce.org) in modo da poter riprodurre il problema? –
Si stanno passando due istanze di oggetti al metodo statico, quindi non dovrebbe avere alcun problema ad agire su quei membri di istanze, se sono esposti. – crush