我正在寫帶一個參數行矩陣,如方法:如果我嘗試用結果來調用方法矩陣分配返回::行()在矩陣<X,1,Dynamic>
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
,這看起來沒有效。我可以通過傳遞值來「解決」問題,在這種情況下,我猜想構建了一個新的Matrix,並將ColXpr
作爲參數構造函數,並且一切正常。
我沒有修改方法內部的矩陣,所以按值傳遞是「可接受的」。但是,我想通過引用來避免複製數據並提高性能。有沒有什麼辦法可以將Matrix::row()
歸還給Matrix<datatype,1,Dynamic>&
?
謝謝,你一定會指出我到正確的方向 – pgilmon 2013-02-15 10:07:47
其實,在你做參數常量我認爲你不需要使用參考(至少它在我的情況下沒有它)。 – pgilmon 2013-02-15 10:14:53
當然,它會工作,但它會引入一個臨時和副本。 – ggael 2013-02-15 12:36:03