在C ++ 11中使用cin作为输入复数

时间:2013-07-17 16:41:44

标签: c++11 complex-numbers

#include <iostream>
#include <complex>
using namespace std;

int main(){
    complex<double> p;
    cin >> p.real() >> p.imag();
}

在g ++ 4.7.2中它运行成功,但在C ++ 11中无法编译。为什么呢?

它给出了以下错误消息:

prog.cpp: In function ‘int main()’:
prog.cpp:7:19: error: no match for ‘operator>>’ in ‘std::cin >> p.std::complex<double>::real()’

完整版:http://ideone.com/M3BhVR

2 个答案:

答案 0 :(得分:4)

你可以这样做更简单:

cin >> p;

格式必须是:(真实,想象)(参见:here

或者您可以执行以下操作:

double real, imag;
cin >> real >> imag;
complex<double> p(real, imag);

答案 1 :(得分:3)

问题是p.real()p.imag()不返回引用,因此它们是临时值,写入临时值没有意义。