使用全局变量初始化单位矩阵不起作用

Using a global variable to initialize an identity matrix not working

我想用一个全局变量n = 7来初始化一个7x7单位矩阵,如下代码所示:

#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;
using Eigen::MatrixXd;

int n = 7;

int main()
{
        MatrixXd I = Matrix<double, n, n>::Identity();
        cout << I << endl;
}

编译时,我得到error: the variable n is not usable in a constant expression。有什么方法可以使用全局变量来初始化单位矩阵吗?

如错误消息所述,您需要一个编译时间常量。

您可以 n 使用 constexpr

#include <iostream>
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;
using Eigen::MatrixXd;

constexpr int n = 7;

int main()
{
        MatrixXd I = Matrix<double, n, n>::Identity();
        cout << I << endl;
}