2015-09-04 40 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已經回答了。