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

 


Dernière réponse
Sujet : [C++] 2 questions : <string> et comparaison ; <vecteur> et pointeurs
Willythekid minusplus, SoWhat et Verdoux, ...j'ai utilise votre solution. C'est effectivement LE truc a faire! J'ai du pete un plomb sur mon code et ne pas le voir :)
D'ailleurs je me demande comment vous avez pu comprendre ce que j'ai dis...c'est tout sauf clair :)
 
Bref merci !

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Willythekid minusplus, SoWhat et Verdoux, ...j'ai utilise votre solution. C'est effectivement LE truc a faire! J'ai du pete un plomb sur mon code et ne pas le voir :)
D'ailleurs je me demande comment vous avez pu comprendre ce que j'ai dis...c'est tout sauf clair :)
 
Bref merci !
SoWhatIn22 la fonction push_back utilise le constructeur de recopie de l'objet que tu utilises. Si tu n'en n'as pas défini, alors le constructeur de recopie par défaut est utilisé (recopie à plat).
 
Donc si ton objet contients des pointeurs:
- soit tu as défini 1 constructeur par recopie qui alloue la mémoire (avec un destructeur qui la désalloue, of course)
- soit il fait une recopie à plat (il ne garde 'que' le pointeur.
minusplus C'est bizarre comment tu traites le problème !
 
Avec les infos que tu donnes, moi je ferais :
 
void Initiate_Territories(vector<Territory> &T){
  Territory* t;
 
  t = new Territory("machin truc" ); // pour lui donner un nom avec un   constructeur adéquat  
// ou alors avec un constructeur par défaut suivit de  
// t->Setname("machin truc" );
  T.push_back(*t);
};
 
Si tu veux stocker des pointeurs, c'est pareil sauf :
 - la déclaration de ton vector (évidemment !)
 - et le T.push_back(t);

 

--Message édité par minusplus--

verdoux En général, quand les objets sont gros, on utilise des containers de pointeurs sur les objets.
Willythekid Bon...ca a pas l'air d'inspirer grand monde alors je reviens a la charge :)
 
1) Pour la premiere question, c'est regle...J'ai pas fignole (ca n'a pas d'interet) et j'ai reutilise <string.h> pour eviter d'ecrire ma propre fonction pour <string>.
 
2) Pour la deuxieme question...une reponse m'interesse toujours !  
En attendant, comme j'ai le sentiment d'avoir raison :) j'ai utilise des pointers...Mon vecteur emmagasine donc des pointeurs sur une classe Territory au lieu de simple objet Territory...
Willythekid salut,
 
2 questions, en fait...J'ai deja cherche un peu partout sur le web et je n'ai pas trouve de reponse satisfaisante...Je m'en remets a vous :)
 
1) <string>
Y a-t-il une fonction (membre ou non) de string qui me permette de comparer 2 variables "string" independemment des majuscules / minuscules...
J'essaie d'eviter autant que possible l'utilisation de <string.h> et d'utiliser <string>
Si une telle fonction n'existe pas :(, y en a-t-il au moins une qui fasse passer de minuscule a majuscule ?
 
2) <vector>
Une question sur la maniere dont un vecteur garde les variables qu'on lui donne. vector ne garde-t-il que des pointeurs ?
La question peut paraitre anodine mais voila le code en question :
 
dans le int main()
      vector<Territory> territories;
      Initiate_Territories(territories);
 
la fonction Initiate_Territories(vector<Territory> &territories)
      territories.push_back(Territory());
      territories[i].SetName(info);
 
SetName est une fonction membre de Territory qui definie le nom (tiens donc :) )
Le truc c'est que si vector emmagasine juste des pointeurs, je cree alors un pointer sur un Territory qui n'existe juste que dans le cadre de ma fonction...Apres la fin de la fonction mon pointeur pointe sur...rien :) D'ou la merde :)
 
Alors, est-ce vraie ? (oui j'ai la flemme de regarder le fichier :) )
 
Merci bcp :)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)