问题描述
我正在使用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();
。