如何处理静态断言失败的本征错误?
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();
.
我正在使用 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();
.