Σφάλμα μεταγλώττισης σε αντάλλαγμα δείκτη

ψήφοι
0

Έχω την κατηγορία BST ίδιο με αυτό το νήμα

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

Προσπαθούσα να επιστρέψει ένα δείκτη από τη λειτουργία, όπως γίνεται σε αυτό το νήμα .

ο ορισμός της minFunc είναι στο ίδιο αρχείο 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;
}

Δεν είναι δυνατή η καταλάβω τα σφάλματα μεταγλώττισης :

error C2143: συντακτικό σφάλμα: λείπει '?' πριν '*'

C2065 σφάλμα: «Τ»: αδήλωτης αναγνωριστικό

Σφάλμα C2955: «BST»: η χρήση της κατηγορίας προτύπου requ i res πρότυπο κατάλογο επιχείρημα

C2509 σφάλμα: «minFunc»: συνάρτηση-μέλος που δεν έχουν δηλωθεί στην «BST»

Όλα αυτά δείχνουν με τον ορισμό

Δημοσιεύθηκε 29/05/2011 στις 11:29
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
2

Καλύτερη εικασία μου είναι ότι struct tree_nodeδεν είναι ορατή. Είναι πιθανόν να μην κηρυχθεί / δηλώνονται στο εσωτερικό κάποια τάξη.

Απαντήθηκε 29/05/2011 στις 11:37
πηγή χρήστη

ψήφοι
0

TreeNode είναι μια ιδιωτική struct στη BST - δεν μπορείτε να έχετε πρόσβαση έξω BST

Απαντήθηκε 29/05/2011 στις 11:38
πηγή χρήστη

ψήφοι
1

  1. Αλλάξτε αυτή τη δήλωση:

    struct tree_node * minFunc (tree_node ** κόμβος)?

σε αυτό

tree_node* minFunc( tree_node** node);

Αλλάξτε αναλόγως τον ορισμό της.

  1. Διπλό δείκτης είναι ένα σίγουρο σημάδι κακού σχεδιασμού
  2. Μήπως μπορείτε να περιλαμβάνει μια κεφαλίδα που καθορίζει struct tree_node;

ΕΠΕΞΕΡΓΑΣΙΑ

Ο ορισμός θα πρέπει να είναι

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

από τον τρόπο, ρίξτε μια σημείωση ότι η μέθοδος minFunc είναι ιδιωτική και δεν μπορώ να την πρόσβαση του εκτός της κατηγορίας

Απαντήθηκε 29/05/2011 στις 12:03
πηγή χρήστη

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