我想编译一个程序,在那里我使用
初始化Eigen中的复杂矩阵MatrixXcd
MatrixXcd M;
M.resize(length,length);
M(i,j).real()=f(i,j)
M(i,j).imag()=f(i,j)
其中f(i,j)是i,j的类型std::complex<double>
的某个函数。一切正常,除非我使用-std=c++0x
编译器选项,我需要它。使用此选项时,我收到错误:
error: lvalue required as left operand of assignment
对于上面的代码行,出了什么问题?
答案 0 :(得分:1)
将其更改为:
M(i, j) = f(i, j);
那已经只分配了真实的部分。
如果要根据实部和虚部分配一般复数,请使用例如
M(i, j) = std::complex<double>(f(i, j), g(i, j));