kompilere feil i peker-retur

stemmer
0

Jeg har BST klassen samme som i denne tråden

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);
};

I prøvde å returnere en peker fra den funksjon som utføres i denne tråd .

definisjonen av minFunc er i den samme filen 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;
}

Kan ikke finne ut av Kompilerings- feil :

feil C2143: syntax error: mangler ';' før '*'

error C2065: 'T': svart identifikator

error C2955: 'BST': bruk av klasse mal requ jeg res malparametere liste

error C2509: 'minFunc': medlemsfunksjonen ikke er deklarert i 'BST'

alle disse peker til definisjonen

Publisert på 29/05/2011 klokken 10:29
kilden bruker
På andre språk...                            


3 svar

stemmer
2

Min beste gjetning er at struct tree_nodeikke er synlig. Det er sannsynligvis ikke erklært / deklarert inne noen klasse.

Svarte 29/05/2011 kl. 10:37
kilden bruker

stemmer
0

treenode er en privat struct i BST - du får ikke tilgang til den utenfor BST

Svarte 29/05/2011 kl. 10:38
kilden bruker

stemmer
1

  1. Endre denne erklæringen:

    struct tree_node * minFunc (tree_node ** node);

inn i dette

tree_node* minFunc( tree_node** node);

Endre den definisjon tilsvarende.

  1. Double pekeren er et sikkert tegn på dårlig design
  2. Har du inkludere en overskrift som definerer struct tree_node?

REDIGERE

Definisjonen skal

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;
}

forresten, ta et notat at metoden minFunc er privat, og ikke kan få tilgang til det utenfor klassen

Svarte 29/05/2011 kl. 11:03
kilden bruker

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