命名空间'Eigen'中的'Index'没有命名类型

时间:2017-01-20 22:08:28

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

我正在尝试在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的定义。我不知道为什么要给我这些错误。

1 个答案:

答案 0 :(得分:0)

也许你没有以正确的方式打电话给我......如果没有任何代码,我真的不能说,我会猜测! 要明确:

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

    using namespace Something;
    

    其中Something = LDLTSomething = LLT

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

    LDLT<Eigen::MatrixXd>替换为您拥有的任何内容。

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

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