Tôi đang cố gắng trả lại một khối ma trận làm giá trị của hàm. Hãy nói rằng chức năng của tôi trông như thế này:Thư viện Eigen: trả về một khối ma trận trong một hàm như lvalue
Block<Derived> getBlock(MatrixXd & m, int i, int j, int row, int column)
{
return m.block(i,j,row,column);
}
Khi nó quay ra, có vẻ như C++ biên dịch hiểu rằng nhà điều hành khối() cho phép chỉ có giá trị tạm thời và do đó trở về nó như là một giá trị trái bị cấm bởi trình biên dịch. Tuy nhiên, trong tài liệu Eigen có một số ví dụ rằng chúng ta có thể sử dụng Eigen như một lvalue (http://eigen.tuxfamily.org/dox/TutorialBlockOperations.html#TutorialBlockOperationsUsing) vì vậy tôi tự hỏi làm thế nào chúng ta không thể làm điều tương tự với hàm trở về.
a.block(0,0,2,3) = a.block(2,1,2,3);
Cảm ơn bạn!
nhờ các mẫu biểu thức, khối() không thực sự trả về bản sao khối, thay vào đó nó chỉ trả về một biểu thức –
@ user3183610 để làm thế nào để buộc một khối (biểu thức) để đánh giá. Tôi có nghĩa là một giá trị hợp lệ. – stanleyerror