Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1554 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++] vecteur de classes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[c++] vecteur de classes

n°917430
didier1809
${citation_perso}
Posté le 07-12-2004 à 20:46:05  profilanswer
 

Bonjour, j'ai 'fait' un vector de classes, que je remplit avec des objets de ma classe principale, ou des objets hérités.
 
Mais j'aimerai pouvoir faire par la suite : vecteur[i].affiche(); par exemple, ou affiche est une fonction de mes classes, mais le compilateur (Visual .NET) me dit que error C2228: left of '.affiche' must have class/struct/union type  :sweat:  
 
Il doit exister un moyen de contourner ca, je pense, mais je ne sais pas lequel.  
 
 
 
Merci  :hello:  :jap:


---------------
.
mood
Publicité
Posté le 07-12-2004 à 20:46:05  profilanswer
 

n°917442
bjone
Insert booze to continue
Posté le 07-12-2004 à 20:55:50  profilanswer
 

operator [](int) ?

n°917443
didier1809
${citation_perso}
Posté le 07-12-2004 à 20:56:28  profilanswer
 

bjone a écrit :

operator [](int) ?


 
 :??:


---------------
.
n°917445
bjone
Insert booze to continue
Posté le 07-12-2004 à 20:58:21  profilanswer
 

c'est vector<> que tu utilises, où tu as refais ta propre template à-la-vector, ou tu as fait une classe vecteur<> qui dérive de vector<> ?

n°917446
didier1809
${citation_perso}
Posté le 07-12-2004 à 20:58:43  profilanswer
 

bjone a écrit :

c'est vector<> que tu utilises, où tu as refais ta propre template à-la-vector, ou tu as fait une classe vecteur<> qui dérive de vector<> ?


 
j'utilise vector<>
 

Code :
  1. vector<Client *> VecCli;


Message édité par didier1809 le 07-12-2004 à 20:59:09

---------------
.
n°917448
bjone
Insert booze to continue
Posté le 07-12-2004 à 20:59:16  profilanswer
 

et de toutes manières si ta classe dans le vector<> a .affiche() ça devrait marcher.

n°917449
Joel F
Real men use unique_ptr
Posté le 07-12-2004 à 20:59:43  profilanswer
 

a->affiche() :sarcastic:

n°917450
bjone
Insert booze to continue
Posté le 07-12-2004 à 20:59:53  profilanswer
 

avec vector<Client *> :
VecCli[20]->affiche();
 
avec vector<Client> :
VecCli[20].affiche();

n°917451
bjone
Insert booze to continue
Posté le 07-12-2004 à 21:00:06  profilanswer
 

grilled :D

n°917453
bjone
Insert booze to continue
Posté le 07-12-2004 à 21:00:46  profilanswer
 

sinon attention à la destruction de ton vector<>, tes instances de Client ne sont pas détruites.

mood
Publicité
Posté le 07-12-2004 à 21:00:46  profilanswer
 

n°917457
didier1809
${citation_perso}
Posté le 07-12-2004 à 21:03:39  profilanswer
 

J'adore VC6, il ne voulait pas le faire, je recompile, et hop, miracle, les methodes apparraissent  :pfff:  
 
Désolé du dérangement les gars  :sweat:  
 
J'avais essayé comme ca d'abord, mais je sais pas ce qui a merdé  :sweat:  
 
 
Enfin bon, ca marche c'est le principal


---------------
.
n°917459
didier1809
${citation_perso}
Posté le 07-12-2004 à 21:04:10  profilanswer
 

bjone a écrit :

sinon attention à la destruction de ton vector<>, tes instances de Client ne sont pas détruites.


 
oui j'ai vu ca en faisant une recherche ici, il faut faire une boucle avec un delete dedan  :o


---------------
.
n°917461
push
/dev/random
Posté le 07-12-2004 à 21:05:23  profilanswer
 

j'ai vu passer un phantôme.

n°917495
bjone
Insert booze to continue
Posté le 07-12-2004 à 22:14:09  profilanswer
 

huh ?

n°2199642
mirou13
Posté le 07-08-2013 à 18:25:09  profilanswer
 

didier1809 a écrit :


 
oui j'ai vu ca en faisant une recherche ici, il faut faire une boucle avec un delete dedan  :o


 
Salut
 
C'est exactement mon problème actuel , Comment faire cette boucle avec un delete?  
 
Merci :)

n°2199643
Terminapor
I'll see you rise.
Posté le 07-08-2013 à 18:30:06  profilanswer
 

T'as deux solutions :  
 

Code :
  1. for (std::vector< type >::iterator it = MonVector.begin(); it != MonVector.end(); ++it)
  2.   {
  3.     type* Instance = (*it);
  4.     delete Instance;
  5.   }
  6.   // Ou :
  7.   for (size_t i = 0 ; i < MonVector.size(); ++i)
  8.   {
  9.     type* Instance = MonVector[i];
  10.     delete Instance;
  11.   }


 
Maintenant, ce que je te recommanderais c'est de ne pas utiliser de pointeurs nu mais des std::unique_ptr / std::shared_ptr pour gérer le cycle de vie de tes objets. (La destruction se fera sans delete)


---------------
Perhaps you don't deserve to breathe
n°2199644
theshockwa​ve
I work at a firm named Koslow
Posté le 07-08-2013 à 18:35:18  profilanswer
 

j'aurais plutôt dit : t'as deux solutions : les std::shared_ptr (si tu veux étendre la durée de vie au-delà de celle de ton conteneur) ou les std::unique_ptr (si tes données ont une durée de vie strictement égale à celle de ton conteneur).

 

Ca t'évite de te soucier avec la boucle pour libérer. C'est plus propre. C'est du C++ moderne.


Message édité par theshockwave le 07-08-2013 à 18:35:31

---------------
last.fm

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] vecteur de classes

 

Sujets relatifs
Classes et Ezpdfles Classes?
[JSP] Utilisation de classes personnellesnormalisation d'un vecteur et epsilon value in raytracing
[JAVA] Vector et différentes classesLes Classes :-)
[C#] Déclarer un array d'instances de classes ?Classes et Unit
répertoire des classesDu reverse engineering pour les classes Php ?
Plus de sujets relatifs à : [c++] vecteur de classes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR