我正在尝试使用Eigen库在C ++中定义一个动态矩阵。首先,我将行数和列数作为输入(nZ),然后在以下类中定义矩阵,但不允许我使用(nZ)作为行数变量!你知道我该怎么办吗?
GetParams参数;
哈密顿量级{
上市:
哈密顿();
无效SetHam0(double,double,int,double)
虚拟〜Hamiltonian();
int nZ = Params.Get_nZ();
私人的:
Eigen :: MatrixXd U_on = Eigen :: MatrixXd.setZero(nZ,1);
Eigen :: MatrixXd Ham0 = Eigen :: MatrixXd.setZero(nZ,nZ);
Eigen :: MatrixXd mstar = Eigen :: MatrixXd.setZero(nZ,nZ);
Eigen :: MatrixXd U_v = Eigen :: MatrixXd.setZero(nZ,1);
};
最佳答案
评估nZ和构造函数中的所有矩阵:
class Hamiltonian {
public:
Hamiltonian();
virtual ~Hamiltonian();
private:
Eigen::MatrixXd U_on;
Eigen::MatrixXd Ham0;
Eigen::MatrixXd mstar;
Eigen::MatrixXd U_v;
int nZ;
};
Hamiltonian::Hamiltonian()
{
GetParams Params;
nZ = Params.Get_nZ();
U_on = Eigen::MatrixXd.setZero(nZ,1) ;
Ham0 = Eigen::MatrixXd.setZero(nZ,nZ) ;
mstar = Eigen::MatrixXd.setZero(nZ,nZ) ;
U_v = Eigen::MatrixXd.setZero(nZ,1) ;
}