Vector d'objet

Résolu
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. 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/
    1. désolé mais, lorsque j'essaye de mettre un objet comme paramètre dans le push_back(), le compilateur Hurle a MORT....
  2. peut on faire ceci:
    vector<MyClass> Objet(5);
    Objet.push_back(MyClass);
    1. 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);
  3. :(, sa hurle encore,
    no matching function for call to `std::vector<Employee, std::allocator<Employee> >::push_back(Employee (&)())'|
    1. ça fait un bail que j'ai plus touché à tout ça...

      désolé, je vais voir.
      1. 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
        
        1. Parfait, Compile a merveille. ;D
          Merci pour tous...