Bonjour,

J'essaie d'utiliser pop_front sur une liste de pointeur qui fait partie d'une classe. Évidemment, ca ne fonctionne pas car pop_front n'est pas une méthode membre.

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class LeafNode : public Node // Inherits from Node class
{
 private:
  vector<Leaf *> m_children;
[...] /

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void LeafNode::addLeaf( LeafNode * original, int kVar[], int kLeaf[], int *kLeafCount, int *leafCount, int *nrxL)
{
    setNchilds(0);
    setNobs(0);

  while ( ((kLeaf[*kLeafCount]) <= (*leafCount) + original->getNchilds()) &  (*kLeafCount < *nrxL))
  {
    
       
    m_children.push_back ( new Leaf(original->m_children[kLeaf[(*kLeafCount) - (*leafCount) ]- 1], kVar  )); /*Copy leaf*/

    [...]

  }

  //Remove the empty first leaf
  popLeaf();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
void LeafNode::popLeaf()
{
    //vector <Leaf *> LeafVector;
   // getLeaves(LeafVector);
    //*LeafVector.pop_front();
   // m_children = LeafVector;
 
    m_children.pop_front();
}
Dans popLeaf(), la section en commentaires est une des solutions proposées sur le Web mais elle ne fonctionne pas pour moi.

Le message d'erreur est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
error: 'class std::vector(Leaf*)' has no member named 'pop_front'
Ce qui me laisse perplexe, c'est que m_children puisse utiliser push_back(...) mais pas pop_front().
Je dois absolument trouver un moyen de retirer le premier élément de mon vecteur car il s'agit d'une feuille vide.
Quelqu'un a une idée?