ANN库中的前向声明

时间:2016-03-01 14:24:12

标签: c++ forward-declaration kdtree

我正在使用ANN库(https://www.cs.umd.edu/~mount/ANN/)。有一个功能

[StringLength(Int32.MaxValue, MinimumLength = 6)]
public string Name { get; set; }

提供kdtree统计信息。图书馆的手册定义了这个函数:

ANNkdTree::getStats(ANNkdStats &st)

但是,如果我按照函数调用,我只能找到前向声明

class ANNkdStats { // stats on kd-tree
public:
   int dim; // dimension of space
   int n_pts; // number of points
   [...]
}

我唯一想做的就是简单地使用这个功能

class ANNkdStats;

编译器输出如下:

ANNkdStats st;
kdTree->getStats(st);

我不习惯使用前向声明方法,我不知道如何解决它,因为我无法修改库。

提前感谢您的回答。 :d

1 个答案:

答案 0 :(得分:1)

ANNkdStats类在ANN/ANNperf.h头文件中定义:

class ANNkdStats {          // stats on kd-tree
public:
    int     dim;            // dimension of space
    int     n_pts;          // no. of points

    // ...

    ANNkdStats()            // basic constructor
    { reset(); }

    void merge(const ANNkdStats &st);   // merge stats from child 
};

添加

#include "ANN/ANNperf.h"

指令应该足够了(ANNperf.h依次包含ANN.h)。

这假设ANN包含目录已经在编译器的搜索路径(g++ -Iinclude_dir)上。