2017-04-21 1 views
1

Je pense que cette erreur me dit que ma fonction d'insertion n'est pas déclarée cependant autant que je peux dire que je l'ai déclarée correctement et il est dans la partie publique de ma classe ainsi Je pense que je devrais être capable de l'utiliser dans ma fonction principale. J'essaie de l'appeler simplement insert(12); mais il me donne Erreur: 'insert' n'a pas été déclaré dans cette portée.Erreur: "Fonction" non déclarée dans cette portée

class BST 
{ 
    public: 
     BST(); 
     BST(int* arr, int size); 
     void insert(int val); 
     void inOrderTraversal(); 
     void inOrderTraversal(node * Root); 

    private: 
     node * Root; 

}; 

void BST::insert(int val) 
{ 
    node* temp = new node(); 
    temp->value = val; 

    if(Root == NULL) { 
     Root = temp; 
     return; 
    } 

    node* current; 
    current = Root; 
    node* parent; 
    parent = Root; 
    current = (temp->value < current->value) ? (current->Left) : (current->Right); 

    while(current != NULL) 
    { 
     parent = current; 
     current = (temp->value < current->value) ? (current->Left) : (current->Right); 
    } 

    if(temp->value < parent->value) { 
     parent->Left = temp; 
    } 

    if(temp->value > parent->value) { 
     parent->Right = temp; 
    } 
} 
+0

Où appelez-vous cela? – tkausl

+0

Ajoutez la partie dans votre fonction 'main()' où vous avez inclus 'insert (12)' dans votre message. –

Répondre

2

Si vous écrivez simplement insert(12); alors vous avez probablement besoin de créer une instance de votre classe BST et y accéder en fonction de membre:

BST tree; 
tree.insert(12); 
+0

Duh, merci. –

+0

@ Garrett si cela a résolu votre problème, s'il vous plaît marquer comme tel, merci. – nitronoid