Question

The following class returns the following error from g++:

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

If line 5 is uncommented, the same error occurs, only at line 5.

Am I missing an obvious syntax error here from staring at this too long? Or am I improperly declaring the template class?

#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
Was it helpful?

Solution

You're template code is correct, but the code that comes before it (likely in another header) is not. Check to make sure your class definitions in other headers have semi-colons after them.

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

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

int main() {
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top