我被要求实现该功能:
"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*
)当你的函数需要引用时(const Complex&
)。引用和指针是完全不同的东西。当函数需要引用参数时,您需要直接向其传递对象。引用仅意味着对象未被复制。
要获取要传递给函数的对象,您需要取消引用指针:
Complex::distanta(*firstComplexNumber, *secondComplexNumber);
或者让你的函数接受指针参数。
但是,我不会真正建议上述任何一种解决方案。因为您在这里不需要动态分配(并且您正在泄漏内存,因为您不需要delete
你有什么new
ed),你最好一开始就不要使用指针:
Complex firstComplexNumber(81, 93);
Complex secondComplexNumber(31, 19);
Complex::distanta(firstComplexNumber, secondComplexNumber);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)