我正在编写一个方法,将一个行作为参数矩阵,例如:
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
,这似乎没有效果。我可以解决&#34;通过传递值来解决问题,在这种情况下,我猜一个新的Matrix是以ColXpr
作为参数构造函数构建的,一切正常。
我没有修改方法中的矩阵,因此传递值是“#34;可接受的&#34;”。但是,我想通过引用传递,以避免复制数据并提高性能。有没有办法从Matrix::row()
返回到Matrix<datatype,1,Dynamic>&
指定的任何内容?