如何处理静态断言失败的本征错误?

How to deal with this eigen error of static assertion failed?

我正在使用 vscode 编写我的 cpp 代码。它使用 Eigen 包。我遇到了一个奇怪的错误:


错误:静态断言失败:YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR

214 | EIGEN_STATIC_ASSERT_FIXED_SIZE(导出)

  |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

我不知道它是什么mean.So我向别人求助。我的代码是:

#include<iostream>
#include<vector>
#include<Eigen/Dense>
using namespace std;
class relax{
    public:
        relax(int mn,int mm,double mxmin,double mxmax,double mymin,double mymax,double merror);
        ~relax();
    private:
        int n;
        int m;
        double xmin;
        double xmax;
        double ymin;
        double ymax;
        double error;
        Eigen::MatrixXd U;
        Eigen::MatrixXd U1;
        double rho(int i,int j);
};
relax::relax(int mm,int mn,double mxmin,double mxmax,double mymin,double mymax,double merror){
    xmin=mxmin;
    xmax=mxmax;
    ymin=mymin;
    ymax=mymax;
    m=mm;
    n=mm;
    error=merror;
    U.resize(m+2,n+2);
    U=Eigen::MatrixXd::Zero();
}

relax::~relax(){

}

double relax::rho(int m,int n){
    return 0;
}
int main(){
    return 0;
}

Eigen::MatrixXd::Zero(rows, cols) 可用于创建一个初始化为 0 的矩阵。 例如。 U=Eigen::MatrixXd::Zero(m+2,n+2);

如果您已经定义了一个矩阵并希望将其设置为零,请使用 setZero 函数:U.setZero();.