使用全局变量初始化单位矩阵不起作用
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;
}
我想用一个全局变量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;
}