我正在尝试编写需要根据输入定义矩阵大小的代码。显示该问题的代码的简化版本是:
#include <iostream>
#include "eigen/Eigen/Dense"
#include <cmath>
using namespace Eigen;
void matrixname( const int numbRow, const int numbcol);
int main()
{
const int numbRow=5;
const int numbCol=3;
matrixname(numbRow,numbCol);
return 0;
}
void matrixname( const int numbRow, const int numbCol)
{
Matrix<double,numbRow,numbCol> y;
}
尝试编译代码时,返回以下错误:
/main.cpp:20:15:错误:非类型模板参数不是常量表达式
在试图定义y的最后一行中,构建中断。
有什么方法可以修改变量的声明或传递,以便能够以此方式定义矩阵的大小?
答案 0 :(得分:1)
根据documentation,如果您在编译时不知道矩阵的大小,则需要将矩阵大小模板参数用作Eigen::Dynamic
。
因此,您可能必须按如下所示修改功能:
void matrixname( const int numbRow, const int numbCol)
{
Matrix<double,Eigen::Dynamic,Eigen::Dynamic> y1(numbRow, numbCol);
// Eigen also provides a typedef for this type
MatrixXd y2(numbRow, numbCol);
}