gpt4 book ai didi

c++ - 如何修复 eigen3 中的 'non-type template argument is not a constant expression'?

转载 作者:行者123 更新时间:2023-11-30 03:13:37 24 4
gpt4 key购买 nike

我对 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 具有您可以使用的动态矩阵(在编译时不需要知道其大小)。

关于c++ - 如何修复 eigen3 中的 'non-type template argument is not a constant expression'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58522426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com