【问题标题】:'Index' in namespace 'Eigen' does not name a type命名空间“Eigen”中的“索引”未命名类型
【发布时间】:2017-06-06 00:03:57
【问题描述】:

我正在尝试在 Qt 项目中使用 pcl 库。我包含了以下头文件,这给了我错误:

#include "pcl/common/common_headers.h"
#include "pcl/io/io.h"

错误发生在eigen的头文件(LDLT.h,LLT.h)中:

'Index' in namespace 'Eigen' does not name a type
'Solve' in namespace 'Eigen' does not name a type

我确实在 LDLT.h 和 LLT.h 文件中看到了 Index 的定义。我不知道为什么给我这些错误。

【问题讨论】:

  • 您使用的是什么版本的 Eigen? (std::cout << EIGEN_WORLD_VERSION << '.' << EIGEN_MAJOR_VERSION << '.' << EIGEN_MINOR_VERSION << '\n';)
  • @chtz 版本是3.3
  • Eigen 3.3.0(及更高版本)肯定有这些类型。您的 Eigen 安装已损坏,或者其他内容已损坏。你能提供一个 MVCE 吗?

标签: c++ qt eigen point-cloud-library


【解决方案1】:

也许你没有以正确的方式调用它们......我真的不能说没有任何代码,我会试着猜测!
说清楚:

  1. Index 是在 LDLT 或 LLT 类中声明的 typedef:您应该决定要使用哪一个!请注意Index 也在类EigenSolver 和其他类中声明;再次决定要使用哪一个。
  2. solve 是给定类的方法(LDLT、​​LLT)

您可以使用两种方法:

using namespace Something;

Something = LDLTSomething = LLT

Eigen::LDLT<Eigen::MatrixXd>::Index your_stuff_with_index = whatever;

用你拥有的任何东西替换LDLT&lt;Eigen::MatrixXd&gt;

关于2.,你应该像下面这样调用solve方法:

LDLT<MatrixXd> chol = whatever;  
.......
.......
result = chol.solve(stuff);

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 2012-11-08
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多