简体   繁体   English

如何处理静态断言失败的这个特征错误?

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

I'm using vscode to write my cpp code.我正在使用 vscode 编写我的 cpp 代码。 It use the Eigen package.它使用 Eigen 包。 And I met a strange error:我遇到了一个奇怪的错误:


error : static assertion failed: YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR错误:静态断言失败:YOU_CALLED_A_FIXED_SIZE_METHOD_ON_A_DYNAMIC_SIZE_MATRIX_OR_VECTOR

214 |第214话EIGEN_STATIC_ASSERT_FIXED_SIZE(Derived) EIGEN_STATIC_ASSERT_FIXED_SIZE(派生)

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

I don't know what does it mean.So I ask someone for help.不知道是什么意思,求大神帮忙。 And my code is:我的代码是:

#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) can be used to create a matrix initialized to 0. Eg U=Eigen::MatrixXd::Zero(m+2,n+2); Eigen::MatrixXd::Zero(rows, cols)可用于创建初始化为 0 的矩阵。例如U=Eigen::MatrixXd::Zero(m+2,n+2);

If you already have defined a matrix and want to set it to zero, use the setZero function: U.setZero();如果您已经定义了一个矩阵并希望将其设置为零,请使用setZero函数: U.setZero(); . .

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM