[c++] no matching function for call to ' '

I was given to implement the function:

 "static double distanta (const Complex&, const Complex&);"

which return the distance between two Complex numbers. The definition of the function it is inside the Complex class and I have implemented it like that:

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);
}

As far as I know a static function can only access static members and my class only has

double _re;
double _im;

as data members.

Within the main function I have called it as:

#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;
}

and the error I get is:

error: no matching function for call to 'Complex::distanta(Complex*&, Complex*&)'

Could you please tell me what is it that I'm doing wrong? Thanks!

This question is related to c++

The answer is


You are trying to pass pointers (which you do not delete, thus leaking memory) where references are needed. You do not really need pointers here:

Complex firstComplexNumber(81, 93);
Complex secondComplexNumber(31, 19);

cout << "Numarul complex este: " << firstComplexNumber << endl;
//                                  ^^^^^^^^^^^^^^^^^^ No need to dereference now

// ...

Complex::distanta(firstComplexNumber, secondComplexNumber);