我将使用Eigen在C++中执行一些矩阵操作。具体而言,我有一行代码大致如下:
MatrixXcd A = MatrixXcd::Zeros(10,10);
A(0,0) += 2.0*1i;
在我的本地计算机上编译没有问题。但是,在使用相同的CMake文件在另一台计算机上编译时,会出现以下错误:
error: no match for ‘operator+=’ (operand types are ‘Eigen::DenseCoeffsBase<Eigen::Matrix<std::complex<double>, -1, -1>, 1>::Scalar {aka std::complex<double>}’ and ‘__complex__ double’)
因此,一些类型std::comple<double>
和__complex__ double
是不同的,计算机无法解决差异。有人能解释一下这些差异是什么,如何消除这种差异吗?我可以尝试弄清楚这两台计算机配置的不同之处,但那似乎是一个更难以在线获得帮助的问题。
std::complex<double> a{}; a+=2.0*1i;
时出现了相同的行为?(您应该提供一个[mre],包括每台计算机上使用的编译器和参数) - chtz