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. 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...
  2. ça fait un bail que j'ai plus touché à tout ça...

    désolé, je vais voir.
    1. :(, sa hurle encore,
      no matching function for call to `std::vector<Employee, std::allocator<Employee> >::push_back(Employee (&)())'|
      1. 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);
      2. 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....