我想知道如何使用复数执行一些简单的操作,而无需单独使用实部和虚部。
示例:
complex<double> A(0.0, 1.0);
complex<double> B;
B = A * 2 + A;
它无法编译:
错误C2678:二进制'*':找不到哪个运算符采用'std :: complex'类型的左手操作数(或者没有可接受的转换))。
我读到这是转换问题。这是一个真正的问题,特别是在代码更复杂的情况下。
有没有办法用复数进行操作?
答案 0 :(得分:3)
这可能是转换问题。也许将常量2指定为浮点值:
B = A * 2.0 + A;
答案 1 :(得分:3)
这是转换问题:
#include <iostream>
#include <complex>
using namespace std;
int main ()
{
complex<double> A (5.0, 10.0);
complex<double> B;
B = A * 2.0 + A;
cout << "B = " << B << endl;
return 0;
}
效果很好。
答案 2 :(得分:1)
C ++提供运算符重载,这可以是一种非常简单友好的方法来处理它。
Complex operator + (Complex a, Complex b)
{
return Complex(a.real + b.real, a.imag + b.imag);
}
Complex operator * (Complex a, double b)
{
return Complex(a.real * b, a.imag * b);
}