tôi đã được đưa ra để thực hiện các chức năng:không có chức năng phù hợp cho cuộc gọi đến ''
"static double distanta (const Complex&, const Complex&);"
mà trả lại khoảng cách giữa hai số phức. Định nghĩa của hàm nó nằm bên trong lớp Complex và tôi đã thực hiện nó như thế:
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);
}
Theo như tôi biết một hàm tĩnh chỉ có thể truy cập vào các thành viên tĩnh và lớp học của tôi chỉ có
double _re;
double _im;
là thành viên dữ liệu.
Bên trong hàm main Tôi đã gọi nó như:
#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;
}
và lỗi tôi nhận được là:
lỗi: không có chức năng phù hợp cho cuộc gọi đến 'Complex :: distanta (Complex * &, Phức tạp * &) '
Bạn vui lòng cho tôi biết tôi đang làm gì sai? Cảm ơn!
Phương thức tĩnh là phương pháp tĩnh? –
Bạn có thể đăng [SSCCE] (http://sscce.org) để chúng tôi có thể tái tạo vấn đề không? –
Bạn đang truyền hai cá thể đối tượng đến phương thức tĩnh, do đó, nó sẽ không có vấn đề gì về các thành viên của cá thể đó, nếu chúng được trưng ra. – crush