行列のブロックを関数の左辺値として返そうとしています。のは、私の関数は次のようになりましょう:結局のところ、C++コンパイラは、そのブロック()演算子は一時的な値と左辺値は、コンパイラによって禁止されているように、それを返すことができます理解しているようです固有ライブラリ:関数内の行列ブロックを左辺値として返します。
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
。しかし、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