gpt4 book ai didi

c++ - 从 Complex* 到 double 的无效转换

转载 作者:行者123 更新时间:2023-11-30 02:00:34 26 4
gpt4 key购买 nike

我必须返回两个复数之间的距离,我在返回行中得到的错误是“从 Complex* 到 double 的转换无效”。

double Complex::distance(const Complex &a, const Complex &b)
{
Complex *number = new Complex();

number->modificaRe(a.real() - b.real());
number->modificaIm(a.imag() - b.imag());

return (double)number;
}

你能告诉我我做错了什么吗?更不用说老师给了我们这个函数的定义为“static double”,但我遇到了另一个错误,所以我只是删除了“static”。

最佳答案

问题是 double 不能同时携带复数的实部和虚部。

我相信两个复数之间的距离是差的平方和的平方和。

所以,你的代码应该是...

double Complex::distance(const Complex &a, const Complex &b)
{
double number;

double r = a.real() - b.real();
double i = a.imag() - b.imag();

number = sqrt(r*r + i*i);

return number;
}

正如 H2CO3 指出的那样,使用 std::hypot 可能更安全...所以

double Complex::distance(const Complex &a, const Complex &b)
{
return std::hypot(a.real() - b.real(), a.imag() - b.imag());
}

关于c++ - 从 Complex* 到 double 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15007606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com