检查下面的C++代码: VectorXcd eivals = subMatrixeigenvalues; for int j = 0; j eivalssize; j++ if stdisnaneivalsjreal eivalsjreal = 0;
这段代码有一个错误。在C++中,复数类型的实部和虚部是只读的,不能通过赋值语句来修改它们的值。因此,将eivals(j).real()的值设置为0是不允许的。
正确的方法是创建一个新的复数对象,将实部设置为0,然后将其赋值给eivals(j)。例如:
if (std::isnan(eivals(j).real())) {
eivals(j) = std::complex<double>(0, eivals(j).imag());
}
原文地址: https://www.cveoy.top/t/topic/i5Mp 著作权归作者所有。请勿转载和采集!