我正在使用ANN库(https://www.cs.umd.edu/~mount/ANN/)。有功能
ANNkdTree::getStats(ANNkdStats &st)
提供kdtree统计信息。图书馆的手册对此功能进行了如下定义:
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);
编译器输出如下:
37: error: invalid use of incomplete type ‘class ANNkdStats’
ANNkdStats *st = new ANNkdStats();
include/ANN/ANN.h:701:7: error: forward declaration of ‘class ANNkdStats’
class ANNkdStats; // stats on kd-tree
我不习惯使用前向声明方法,也不知道如何解决它,因为我无法修改该库。
预先感谢您的回答。 :D
最佳答案
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
)上。