2010-11-14 7 views
0

Pourquoi ai-je cette erreur? Je suis à une perte ...Erreur C++: demande de membre 'push_back' dans 'v'

erreur: demande de membre push_back dans v, qui est de type non-classe std::vector<Leaf, std::allocator<Leaf> >*

class Leaf 
{ 
public: 

    // Variables 
    std::string *name; 

    // Methods 
    Leaf(){} 
    Leaf(std::string *s) 
    { 
     name = s; 
    } 
}; 

class Branch 
{ 
public: 

    // Variables 
    Branch::Branch *parent; 
    Branch::Branch *child; 
    std::vector<Leaf> *children; 
    std::string *name; 

    // Methods 
    Branch(std::string *s) 
    { 
     children = new std::vector<Leaf>; 
     name = s; 
    } 
}; 

class Tree 
{ 
public: 

    // Variables 
    Branch::Branch *current; 

    // Methods 
    Tree(string *name) 
    { 
     current = new Branch::Branch(name); 
    } 

    void addBranch(Branch::Branch *newBranch) 
    { 
     this->current->child = newBranch; 
     newBranch->parent = this->current; 
    } 

    void addLeaf(Leaf::Leaf *leaf) 
    { 
     std::vector<Leaf> *v = this->current->children; 
     v.push_back(leaf); 
    } 
}; 

Répondre

3

Dans la fonction addLeaf() v est un pointeur, et la feuille est un pointeur , vous devez déréférencer les deux.

v->push_back(*leaf); 

En outre, ce qui est avec toutes les qualifications de portée, comme Leaf::Leaf et Branch::Branch? Il devrait simplement être Leaf, et Branch.

0

v est un pointeur vers un vecteur. Utilisez un -> au lieu d'un .. c'est-à-dire v->push_back(whatsit)

Questions connexes