我对 Eigen 库和 C++ 仍然很陌生。我正在测试一些代码,但我不明白为什么会这样
#include <iostream>
#include <Eigen/Dense>
using namespace std;
int main()
{
int a = 2;
const int SIZE_ = a;
Eigen::Matrix<float, SIZE_, SIZE_> test;
return 0;
}
不编译,而这
#include <iostream>
#include <Eigen/Dense>
using namespace std;
int main()
{
const int SIZE_ = 2;
Eigen::Matrix<float, SIZE_, SIZE_> test;
return 0;
}
工作得很好。我如何更改第一个代码才能使其工作(即 SIZE_ 将由可能具有不同值的变量启动)。
你不能。模板参数必须是编译时常量。
const int SIZE_ = 2;
是一个编译时常量,没有可能的方法SIZE_
此处的值可能不同于 2。编译器知道这一点并且可以安全地构建类型Eigen::Matrix<float, 2, 2>
.
const int SIZE_ = someNonConstantExpression;
不是编译时常量。它不能在模板参数中使用。
您不能欺骗编译器接受需要编译时值的运行时值,例如在模板中。但是,Eigen 有动态矩阵(在编译时不需要知道大小),您可以使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)