如何在eigen3中解决'非类型模板参数不是常数表达式?

问题描述 投票:0回答:2

我对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_将由可能具有不同值的变量启动)。

干杯!

c++11 eigen3
2个回答
1
投票

你不能。模板参数必须是编译时常量。


0
投票

[如果您希望Matrix的大小的值来自另一种方法(但仍在编译时),则可以使用如下的constexpr方法:

© www.soinside.com 2019 - 2024. All rights reserved.