gpt4 book ai didi

c++ - ANN 库中的前向声明

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:14:29 26 4
gpt4 key购买 nike

我正在使用 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)。

关于c++ - ANN 库中的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35725451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com