erreur de compilation en retour de pointeur

voix
0

J'ai la classe BST même que dans ce fil

BST.hpp

template<class T> 
class BinarySearchTree
{
 private:
  struct tree_node
  {
    tree_node* left;
    tree_node* right;
    T data;

    tree_node( const T & thedata, tree_node * l = NULL, tree_node * r = NULL )
            : data( thedata ), left( l ), right( r ) { }
  };
tree_node* root;

public:
  //some functions
private:
  struct tree_node* minFunc( tree_node** node);
};

J'ai essayé de retourner un pointeur de la fonction fait dans ce fil .

la définition de minFunc est dans le même fichier BST.hpp

template <class T>
struct tree_node* BST<T>::minFunc(tree_node** node)
{
tree_node* current = *node;
while(current->left != NULL)
{
    current = current->left;
}
return current;
}

Impossible de trouver les erreurs de compilation :

erreur C2143: erreur de syntaxe: manquant « ; » avant '*'

C2065 d'erreur: 'T': identificateur non déclaré

erreur C2955: « BST »: utilisation du modèle de classe requ i res liste des arguments de modèle

C2509 d'erreur: « minFunc »: fonction membre non déclaré dans « BST »

tous ces pointant vers la définition

Créé 29/05/2011 à 11:29
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
2

Ma meilleure estimation est que struct tree_noden'est pas visible. Il est probablement pas déclaré / déclaré dans une classe.

Créé 29/05/2011 à 11:37
source utilisateur

voix
0

treenode est un struct privé dans BST - vous ne pouvez pas accéder à l'extérieur BST

Créé 29/05/2011 à 11:38
source utilisateur

voix
1

  1. Modifier cette déclaration:

    struct tree_node * minFunc (noeud tree_node **);

dans ce

tree_node* minFunc( tree_node** node);

Modifier en conséquence sa définition.

  1. Double pointeur est un signe certain d'une mauvaise conception
  2. Avez-vous inclus un en-tête définissant tree_node struct?

MODIFIER

La définition devrait être

template <class T>
typename BST<T>::tree_node* BST<T>::minFunc(tree_node** node)
{
tree_node* current = *node;
while(current->left != NULL)
{
    current = current->left;
}
return current;
}

par ailleurs, prendre note que la méthode minFunc est un accès privé et ne peux pas en dehors de la classe

Créé 29/05/2011 à 12:03
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more