ANN 库中的前向声明
Forward declaration in ANN Library
我正在使用 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
class 定义在 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
)。
我正在使用 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
class 定义在 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
)。