C++ 如何根据传递给函数的变量定义特征矩阵大小

C++ 如何根据传递给函数的变量定义特征矩阵大小,c++,eigen,C++,Eigen,我正在尝试编写需要根据输入定义矩阵大小的代码。显示问题的代码的精简版本是: #include <iostream> #include "eigen/Eigen/Dense" #include <cmath> using namespace Eigen; void matrixname( const int numbRow, const int numbcol); int main() { const int

我正在尝试编写需要根据输入定义矩阵大小的代码。显示问题的代码的精简版本是:

 #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;
    }
#包括
#包括“本征/本征/密集”
#包括
使用名称空间特征;
无效矩阵名称(常量int numbRow,常量int numbcol);
int main()
{
常数int numbRow=5;
常数int numbCol=3;
矩阵名称(numbRow,numbCol);
返回0;
}
无效矩阵名称(常量int numbRow,常量int numbCol)
{
矩阵y;
}
尝试编译代码时,返回以下错误:

/main.cpp:20:15:错误:非类型模板参数不是常量表达式

构建在试图定义y的最后一行中断

是否有任何方法可以修改变量的声明或传递,以便能够以这种方式定义矩阵的大小?

根据,如果您在编译时不知道矩阵的大小,则需要使用矩阵大小模板参数作为
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);
}
void matrixname(常量int numbRow,常量int numbCol)
{
矩阵y1(numbRow,numbCol);
//Eigen还为此类型提供了typedef
MatrixXd y2(numbRow,numbCol);
}

似乎是重复的?令人惊叹的!非常感谢你!如果这回答了你的问题,请考虑通过点击左边的刻痕来接受它!