Vector d'objet

Résolu
DrCrow Messages postés 416 Statut Membre -  
DrCrow Messages postés 416 Statut Membre -
salut,
donc voila.
Langage [C++]
j'ai creer un vecteur d'objet de la(Class one). ainsi...
et qui contient 5 cases.
vector<one> Obj(5);
si je veux le redimensionner, je procède comment? o_O
avec des push_back(), assign()... sa marche pas.
Merci...;D

5 réponses

  1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    un vector se redimensionne tout seul au besoin. un pushback(nouvel objet) devrait augmenter la taille de 1 (puisque nouvel objet est ajouté à la fin).

    c.f. http://www.cplusplus.com/reference/vector/vector/
    0
    1. DrCrow Messages postés 416 Statut Membre 19
       
      désolé mais, lorsque j'essaye de mettre un objet comme paramètre dans le push_back(), le compilateur Hurle a MORT....
      0
  2. DrCrow Messages postés 416 Statut Membre 19
     
    peut on faire ceci:
    vector<MyClass> Objet(5);
    Objet.push_back(MyClass);
    0
    1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      MyClass est une classe, pas un objet. La classe, c'est une sorte de type de variable.


      C'est comme si tu fais un tableau :

      int tab[10];

      et ensuite que tu remplis la première case comme ceci :

      tab[0] = int ;

      aucune chance que ça marche.



      par contre tu peux faire :

      MyClass objetA, objetB;

      vector<MyClass> v;

      v.pushback(objetA);
      v.pushback(objetB);
      0
  3. DrCrow Messages postés 416 Statut Membre 19
     
    :(, sa hurle encore,
    no matching function for call to `std::vector<Employee, std::allocator<Employee> >::push_back(Employee (&)())'|
    0
  4. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    ça fait un bail que j'ai plus touché à tout ça...

    désolé, je vais voir.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    Bon alors je ne sais pas trop comment tu déclares le tout et comment tu l'utilises.

    Ceci étant, ce code compile et fonctionne chez moi :

    fichier main.cpp
    //------------------------------------------------
    #include <iostream>
    #include <vector>
    #include "MyClass.HPP"
    
    using namespace std;
    
    
    int main(int argc, char *argv[]) {
        vector<MyClass> vClass;
        vector<int> vInt;
        
        MyClass objetA, objetB;
        objetA.setA(18);
        objetB.setA(22);
        
        vInt.push_back(10);
        vClass.push_back(objetA);
        vClass.push_back(objetB);
        
        cout << "vInt : "<< endl;
        for(vector<int>::const_iterator i = vInt.begin(); i!=vInt.end() ; i++) {
            cout << *i << " ";
        }
        cout << " fin " << endl;
        
        
        
        cout << "vClass : "<< endl;
        for(vector<MyClass>::const_iterator i= vClass.begin();i!=vClass.end(); i++) {
            cout << (*i).getA() << " ";
        }
        cout << " fin " << endl;
        
        system("Pause");
    }


    fichier MyClass.hpp

    #ifndef MYCLASS_HPP
    #define MYCLASS_HPP
    
    class MyClass {
          public:
                 int getA(void) const {
                     return a;
                 }
                  
                 void setA(int b) {
                      a = b;
                 }
                 
          private:
                 int a;
    
    };
    
    #endif
    
    0
    1. DrCrow Messages postés 416 Statut Membre 19
       
      Parfait, Compile a merveille. ;D
      Merci pour tous...
      0