行列のブロックを関数の左辺値として返そうとしています。私の関数が次のようになっているとしましょう:
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
結局のところ、C ++コンパイラはblock()演算子が一時的な値のみを与えることを理解しているため、それを左辺値として返すことはコンパイラによって禁止されているようです。ただし、Eigenのドキュメントには、Eigenを左辺値として使用できる例がいくつかあります(http://eigen.tuxfamily.org/dox/TutorialBlockOperations.html#TutorialBlockOperationsUsing)ので、関数で同じことができないのではないかと思います。戻る。
a.block(0,0,2,3) = a.block(2,1,2,3);
ありがとうございました!