Vector d'objet

Résolu
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   -  
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   -
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   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
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
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   Statut Membre Dernière intervention   19
 
peut on faire ceci:
vector<MyClass> Objet(5);
Objet.push_back(MyClass);
0
Pacorabanix Messages postés 3248 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
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
:(, 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   Statut Membre Dernière intervention   663
 
ç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   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
DrCrow Messages postés 387 Date d'inscription   Statut Membre Dernière intervention   19
 
Parfait, Compile a merveille. ;D
Merci pour tous...
0