次のような行マトリックスを引数として取るメソッドを作成しています。
method(Matrix<float,1,Dynamic>& rowMatrix);
次のように、Matrix.row(x) の結果を使用してメソッドを呼び出そうとすると、次のようになります。
Matrix<float,Dynamic,Dynamic> matrix(2,2);
method(matrix.row(1));
次のエラーが表示されます。
no known conversion for argument 1 from ‘Eigen::DenseBase<Eigen::Matrix<float, -1, -1> >::ColXpr {aka Eigen::Block<Eigen::Matrix<float, -1, -1>, -1, 1, true, true>}’ to ‘Eigen::Matrix<float, -1, 1>&’
Matrix<float,1,Dynamic>
ここでの問題は、への参照を に代入しようとしていることだと理解していますがColXpr
、これは有効ではないようです。ColXpr
値を渡すことで問題を「解決」できます。この場合、引数コンストラクターを使用して新しいマトリックスが構築され、すべて正常に機能すると思います。
メソッド内のマトリックスを変更していないため、値渡しは「許容」されます。ただし、データのコピーを回避してパフォーマンスを向上させるために、参照渡しを行いたいと考えています。Matrix::row()
の戻り値からに割り当て可能なものに変換する方法はありますMatrix<datatype,1,Dynamic>&
か?