-2
#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

4

2 回答 2

7

你可以像这样更简单地做到这一点:

cin >> p;

格式必须是:(real,imag)(见:here

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

double real, imag;
cin >> real >> imag;
complex<double> p(real, imag);
于 2013-07-17T16:57:51.873 回答
4

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

于 2013-07-17T16:47:00.677 回答