5
我試圖返回一個矩陣塊作爲函數的左值。比方說我的函數看起來像這樣:本徵庫:返回一個函數中的矩陣塊作爲左值
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
事實證明,似乎C++編譯器明白塊()操作符提供了只是暫時的價值,所以返回它作爲一個左值是由編譯器禁止。然而,在Eigen文檔中有一些例子,我們可以使用Eigen作爲左值(http://eigen.tuxfamily.org/dox/TutorialBlockOperations.html#TutorialBlockOperationsUsing),所以我想知道我們怎麼能不能用同樣的功能返回。
a.block(0,0,2,3) = a.block(2,1,2,3);
謝謝!
感謝表達式模板,block()實際上並不返回一個複製塊,而只是返回表達式 –
@ user3183610,所以如何強制一個塊(表達式)進行評估。我的意思是作爲一個有效的左值。 – stanleyerror