2016-03-01 1 views
2

J'utilise la bibliothèque ANN (https://www.cs.umd.edu/~mount/ANN/). Il existe une fonctionDéclaration en avant dans la bibliothèque ANN

ANNkdTree::getStats(ANNkdStats &st) 

qui fournit les statistiques de kdtree. Le manuel définit cette fonction de la bibliothèque comme ceci:

class ANNkdStats { // stats on kd-tree 
public: 
    int dim; // dimension of space 
    int n_pts; // number of points 
    [...] 
} 

Cependant, si je suis les appels de fonction, je ne peux trouver une déclaration avant

class ANNkdStats; 

La seule chose que je veux faire est un simple utilisation de cette fonction

ANNkdStats st; 
kdTree->getStats(st); 

Et la sortie du compilateur suit:

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 

Je ne suis pas habitué à utiliser les méthodes de déclaration forward, et je ne sais pas comment le résoudre, car je ne peux pas modifier la bibliothèque.

Merci d'avance pour vos réponses. : D

Répondre

1

ANNkdStats classe est définie dans le fichier d'en-tête 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 
}; 

Ajout d'un

#include "ANN/ANNperf.h" 

directive devrait être suffisant (ANNperf.h comprend à son tour ANN.h).

Ceci suppose que le répertoire ANN include est déjà sur le chemin de recherche du compilateur (g++ -Iinclude_dir).

+0

Woo! Merci beaucoup! Ça marche!! :RÉ – froure