我想知道如何用复数来执行一些简单的操作,而不用单独使用实部和虚部。复杂的操作
实施例:
complex<double> A(0.0, 1.0);
complex<double> B;
B = A * 2 + A;
它不编译:
错误C2678:二进制 '*':没有操作员发现这需要类型的左边的操作数“的std ::复杂'(或者没有可接受的转换))。
我看到这是一个转换问题。这是一个真正的问题,特别是在更复杂的代码的情况下。
有没有办法用复数进行操作?
我想知道如何用复数来执行一些简单的操作,而不用单独使用实部和虚部。复杂的操作
实施例:
complex<double> A(0.0, 1.0);
complex<double> B;
B = A * 2 + A;
它不编译:
错误C2678:二进制 '*':没有操作员发现这需要类型的左边的操作数“的std ::复杂'(或者没有可接受的转换))。
我看到这是一个转换问题。这是一个真正的问题,特别是在更复杂的代码的情况下。
有没有办法用复数进行操作?
这可能是一个转换问题。也许指定的常数2作为浮点值:
B = A * 2.0 + A;
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);
}
这是一个转换的问题:
#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;
}
作品相当漂亮。
是的,这样它的工作原理 – Ale 2012-01-27 20:01:22
所以如果我有一个整数值,首先我需要转换它,是吗? – Ale 2012-01-27 20:02:45
@Ale:如果通过转换,你的意思是转换,然后是'B = A *(double) myint + A;' – 2012-01-27 20:07:05