kompilieren Fehler in Zeiger Rückkehr

stimmen
0

Ich habe die BST - Klasse gleiche wie in diesem Thread

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

Ich habe versucht , einen Zeiger aus der Funktion zurückzugeben , wie in getan diesem Thread .

die Definition von minFunc ist in der gleichen Datei 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;
}

Unfähig , die herauszufinden Kompilierung Fehler :

Fehler C2143: Syntaxfehler: fehlen; Vor '*'

Fehler C2065: 'T': undeclared Identifikator

Fehler C2955: 'BST': Verwendung von Template - Klasse requ i res Vorlage Argumentliste

Fehler C2509: 'minFunc': Member-Funktion nicht in 'BST' erklärt

alle auf diese auf die Definition

Veröffentlicht am 29/05/2011 um 11:29
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
2

Meine beste Vermutung ist , dass struct tree_nodenicht sichtbar ist. Es ist wahrscheinlich nicht deklariert / innen einiger Klasse deklariert.

Beantwortet am 29/05/2011 um 11:37
quelle vom benutzer

stimmen
0

treenode ist eine private Struktur in BST - Sie können es außerhalb BST nicht zugreifen können

Beantwortet am 29/05/2011 um 11:38
quelle vom benutzer

stimmen
1

  1. Ändern Sie diese Erklärung:

    struct tree_node * minFunc (tree_node ** node);

das mögen

tree_node* minFunc( tree_node** node);

Ändern Sie die Definition entsprechend.

  1. Doppel-Pointer ist ein sicheres Zeichen für schlechtes Design
  2. Haben Sie umfassen einen Header definieren struct tree_node?

BEARBEITEN

Die Definition sollte sein

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

durch die Art und Weise, nehmen Sie zur Kenntnis, dass die Methode minFunc privater und kippt Zugang ist es außerhalb der Klasse

Beantwortet am 29/05/2011 um 12:03
quelle vom benutzer

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