C++ C+中的复杂变量类型转换+; std::复合物a; int t=2; a=100//这行在打印时,给我(100,0) a*t;

C++ C+中的复杂变量类型转换+; std::复合物a; int t=2; a=100//这行在打印时,给我(100,0) a*t;,c++,casting,type-conversion,complex-numbers,function-call,C++,Casting,Type Conversion,Complex Numbers,Function Call,上面代码的最后一行是错误的,因为复杂类不允许在复杂变量和非复杂变量之间相乘。因此,我试图做到: std::complex<double> a; int t=2; a = 100; //This line upon printing, gives me (100,0) a*t; std::complex z=a*std::complex(t) 这引发了一个错误: 错误:调用std::complex::complex 有没有更好的方法来处理这种类型转换 你认为这里出了什么问题?你完

上面代码的最后一行是错误的,因为复杂类不允许在复杂变量和非复杂变量之间相乘。因此,我试图做到:

std::complex<double> a;
int t=2;
a = 100; //This line upon printing, gives me (100,0)
a*t; 
std::complex z=a*std::complex(t)
这引发了一个错误: 错误:调用
std::complex::complex


有没有更好的方法来处理这种类型转换

你认为这里出了什么问题?你完全可以把实数乘以复数。实数是一个复数(只有
0
虚部)。
t
未初始化,
z
的定义在哪里?如果
z
是一个
std::complex
“上面代码中的最后一行显然是错误的。”可能对您来说是清楚的,但对其他人来说不是,请解释。我不认为你需要在这里转换任何东西,请证明最小,工作的例子。请重新表述您的问题,以便我们更好地了解问题的确切含义。乘法冲突不在复数和非复数之间,而是在
complex
int
之间。乘以一个
double
就行了。你认为这里哪里不对?你完全可以把实数乘以复数。实数是一个复数(只有
0
虚部)。
t
未初始化,
z
的定义在哪里?如果
z
是一个
std::complex
“上面代码中的最后一行显然是错误的。”可能对您来说是清楚的,但对其他人来说不是,请解释。我不认为你需要在这里转换任何东西,请证明最小,工作的例子。请重新表述您的问题,以便我们更好地了解问题的确切含义。乘法冲突不在复数和非复数之间,而是在
complex
int
之间。乘以一个
双精度
就可以了。
std::complex<double> z = a*std::complex<double>(t)