2015-09-04 52 views
2

我有一个具有动态特征矩阵的类。我想从文本文件中读取Matrix并将其分配给类矩阵变量。做这个的最好方式是什么?这是我现在做的如何在C++中正确初始化,分配和使用动态特征矩阵作为类成员?

class MyFoo 
{ 
    MyFoo(); 
    Eigen::MatrixXd mat; 
    void setMatrix(); 
} 

MyFoo::MyFoo(): mat(Eigen::MatrixXd::Zero()) 
{}; 

void MyFoo::setMatrix() 
{ 
    mat = HelperLib::readMatFromTXTfile("someFileName"); 
} 

// Eigen::MatrixXd HelperLib::readMatFromTXTfile(const string &fname); 

我的问题是这样的:首先初始化看起来不正确。其次,使用=来分配读取矩阵似乎也不是太理想。不幸的是,在Eigen主页上没有太多这样的例子,或者我太了解它们了。

+0

由于赋值的右侧是右值,赋值中的副本可能会通过移动语义消失。 – CoryKramer

回答

0

默认情况下,MatrixXd对象初始化为0x0矩阵,因此不需要显式将其初始化为空矩阵。而且,静态成员仅适用于固定大小的矩阵。对于MatrixXd,您需要指定其尺寸,通常使用Zero(n,m)将矩阵初始化为填充显式零的矩阵。

关于这个任务,CoryKramer已经回答了。