c++ - 使用全局变量初始化单位矩阵不起作用
问题描述
我想使用一个全局变量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;
}
推荐阅读
- node.js - 为什么我的快递应用启动后立即关闭?
- azure-devops - 如何在 Azure DevOps 链接中不包含“version=GBmaster”
- flutter - Dart 如何删除断点或调试器
- javascript - 在 react-scroll-trigger 中使用 onProgress
- mongodb - Mongodb - com.mongodb.MongoSocketReadException:过早到达流的末尾
- c# - 如何将数据库密码存储在程序中以便访问数据库?
- ios - iOS - pod 'Google-Mobile-Ads-SDK' 和 pod 'Firebase/AdMob' 有什么区别
- json - 如何使用相同的密钥进行多个 API 调用
- typescript - 如何在 Typescript 中声明 DOMMatrix 和 WebKitCSSMatrix?
- nginx - 使用自定义运行状况检查负载平衡 UDP syslog