C++ 在c+中将已定义的结构转换为双精度(复数)+;

C++ 在c+中将已定义的结构转换为双精度(复数)+;,c++,struct,double,complex-numbers,C++,Struct,Double,Complex Numbers,我试图找到定义结构的方法,并将其编码为定义一个复数。我已经成功地使用了它们,例如,增加了乘法,但我不知道如何将复数的绝对值转换为双精度,我的编译器一直告诉我它不知道如何转换,即使复杂结构实际上是由两个双精度组成的 #include <iostream> #include <cstdlib> #include <cmath> using namespace std; struct Complex_Number { double re, im

我试图找到定义结构的方法,并将其编码为定义一个复数。我已经成功地使用了它们,例如,增加了乘法,但我不知道如何将复数的绝对值转换为双精度,我的编译器一直告诉我它不知道如何转换,即使复杂结构实际上是由两个双精度组成的

    #include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

struct Complex_Number { 
    double re, im;      
};
void print(const Complex_Number& w) //my print function for complex numbers
{
    cout  << '(' << w.re << " + i*" << w.im << ')';
}

 double abs(const Complex_Number& z )
{

   z = z.re + z.im;
  abs = sqrt((z.re*z.re)+(z.im*z.im)); 

   return abs;
   }




  int main()
{

 return 0;




}
#包括
#包括
#包括
使用名称空间std;
结构复数{
双re,im;
};
void print(const Complex_Number&w)//我的复数打印函数
{

不能我不知道你打算用
z=z.re+z.im
做什么;第二部分只需要分配给一个变量或直接返回。所以写

double abs(const Complex_Number& z ) {

  double ret = sqrt((z.re*z.re)+(z.im*z.im)); 

  return ret;
}


在代码中为“函数名”赋值,即
abs=sqrt((z.re*z.re)+(z.im*z.im))代码,不是有效的C++代码。函数>代码> ABS<代码>是函数的名称——即函数指针——你需要创建一个双变量。参见@ ToMasMatthWS提到的,你应该检查你的本地代码“STD::复杂< /Calp>”来查看接口如何由你的标准库定义。哇,谢谢。我花了太多的钱。今天我真的阻止自己看到这个明显的…我真的很感谢你的帮助!
double abs(const Complex_Number& z ) {

  return sqrt((z.re*z.re)+(z.im*z.im)); 
}