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

问题描述

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


错误:静态声明失败:YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR

214 | EIGEN_STATIC_ASSERT_FIXED_SIZE(派生)

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

我不知道这是什么意思,所以我向某人寻求帮助。我的代码是:

#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 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();