gpt4 book ai didi

c++ - KDTree 的模板类声明

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:53 27 4
gpt4 key购买 nike

以下类从 g++ 返回以下错误:

tree.h:9: error: expected unqualified-id before 'template'

如果第 5 行没有注释,同样的错误发生,只在第 5 行。

我是不是因为盯着看太久而遗漏了一个明显的语法错误?还是我不正确地声明了模板类?

#ifndef TREE_H
#define TREE_H


//template <typename T, typename P, typename C> class kdtree_t;

//Kdtree class

template <typename T, typename P, typename C>
class kdtree_t{
private:
struct node_t
{
P data;
T min, max;
node_t *left, *right;
int axis;

node_t(const P& d = 0, const T& in = 0,
const T& ix = 0, node_t *l = NULL,
node_t * r = NULL, int a = 0)
: data(d), min(in), max(ix),
left(l), right(r), axis(a) {}
};
public:
void nn(T& q, P& t, double radius)
{
nn(root, q, t, radius);
}

void insert(std::vector<P>& x, const T& min, const T& max)
{
root = insert(root, x, min, max, 0);
}

void knn(T& q, std::vector<P> vec, double r, int k)
{
knn(root, q, vec, r, k);
}

void range(T& min, T& max, std::vector<P> irange)
{
this->range(root, min, max, irange);
}

void clear()
{
clear(root);
}

private:

void nn(node_t* &,T&,P&,double&);
void knn(node_t* &,T&,std::vector<P>&,double&,int);
void range(node_t* &,const T&,const T&,std::vector<P>&);

void clear(node_t* &);
node_t* clone(node_t* ) const;

node_t* root;
node_t* insert(node_t * &, std::vector<P>&, const T&, const T&, int);

};

#endif

最佳答案

您的模板代码是正确的,但它之前的代码(可能在另一个 header 中)不正确。检查以确保您在其他标题中的类定义后面有分号。

class x // no semi-colon here causes same error!

template <typename T, typename P, typename C>
};

int main() {
}

关于c++ - KDTree 的模板类声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177894/

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