我想知道如何用複數來執行一些簡單的操作,而不用單獨使用實部和虛部。複雜的操作
實施例:
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