Vector d'objet

Résolu/Fermé
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - 25 janv. 2010 à 18:23
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 - 30 janv. 2010 à 09:42
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

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
25 janv. 2010 à 22:09
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
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
28 janv. 2010 à 23:03
désolé mais, lorsque j'essaye de mettre un objet comme paramètre dans le push_back(), le compilateur Hurle a MORT....
0
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
28 janv. 2010 à 23:59
peut on faire ceci:
vector<MyClass> Objet(5);
Objet.push_back(MyClass);
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
29 janv. 2010 à 22:09
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
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
29 janv. 2010 à 22:21
:(, sa hurle encore,
no matching function for call to `std::vector<Employee, std::allocator<Employee> >::push_back(Employee (&)())'|
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
29 janv. 2010 à 22:23
ça fait un bail que j'ai plus touché à tout ça...

désolé, je vais voir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
29 janv. 2010 à 22:53
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
DrCrow Messages postés 387 Date d'inscription lundi 9 novembre 2009 Statut Membre Dernière intervention 20 août 2014 19
30 janv. 2010 à 09:42
Parfait, Compile a merveille. ;D
Merci pour tous...
0