【发布时间】:2013-02-27 13:55:46
【问题描述】:
我被赋予实现功能:
"static double distanta (const Complex&, const Complex&);"
返回两个复数之间的距离。函数的定义在 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(Complex*&, Complex*&)'
你能告诉我我做错了什么吗? 谢谢!
【问题讨论】:
-
Complex::distanta是静态方法吗? -
您能否发帖SSCCE 以便我们重现该问题?
-
您将两个对象实例传递给静态方法,因此如果它们被公开,则对这些实例成员进行操作应该没有问题。
-
只要定义为静态双远距离(const Complex&, const Complex&);在我看来这是一个静态的。
-
静态方法根本无法访问
this,但在这种情况下应该不成问题。所有a.real()、b.imag()等都不需要this。
标签: c++