2009-08-29 11 views
1

Je l'extrait de code de code RPC suivant et le message d'erreur associé:Erreur lors pointeur insertion d'un vecteur

extrait de code

struct node{ 
      char charVal; 
      bool childNode; 
      struct node *leftChild; 
      struct node *rightChild; 
    }; 
    vector<std::pair<int,struct node*> > nodeCountList; 
    struct node *nodePtr = new struct node; 
    nodeCountList.push_back(1,nodePtr); 

Message d'erreur

error: no matching function for call to ‘std::vector<std::pair<int, node*>, std::allocator<std::pair<int, node*> > >::push_back(int&, node*&)’ 
/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:602: note: candidates are: void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = std::pair<int, node*>, _Alloc = std::allocator<std::pair<int, node*> >] 

S'il vous plaît aidez-moi à résoudre le message d'erreur.

acclamations

Répondre

7

Vous devez appuyer sur une paire std ::.

nodeCountList.push_back(std::make_pair(1,nodePtr)); 
1

Avez-vous essayé turining « noeud » dans un premier type, puis en utilisant votre modèle? Peut-être que cela fonctionnera mieux.

2

Vous essayez de transmettre deux arguments à nodeCountList.push_back, qui n'accepte qu'un seul argument. Au lieu de cela, créez d'abord un std::pair avec les deux éléments que vous voulez. Ensuite, appelez nodeCountList.push_back avec cet std::pair comme argument.

Questions connexes