#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()’
答案 0 :(得分:4)
你可以这样做更简单:
cin >> p;
格式必须是:(真实,想象)(参见:here)
或者您可以执行以下操作:
double real, imag;
cin >> real >> imag;
complex<double> p(real, imag);
答案 1 :(得分:3)
问题是p.real()
和p.imag()
不返回引用,因此它们是临时值,写入临时值没有意义。