块和表达式必须具有const值错误

时间:2014-12-11 20:22:07

标签: c++ eigen3

我想从矩阵A的块中创建矩阵B.A的大小发生变化,所以我试图实现以下

Eigen::MatrixXd B(A.block<3,N>(0,0)); 

其中N是A的列号。我收到此错误the expression must have constant value.如何解决此问题?我试过使用const_cast<>,但我仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:2)

我认为这样可行:

Eigen::MatrixXd B = A.block(0, 0, 3, N);

eigen的API文档是here。 如果N是变量,则它不能用作模板函数参数(<3,N>),因为它们必须是编译时常量(编译器生成/实现函数的版本{{1对于每个组合或模板参数。)