- Passage d'object dans un vecteur [Prob en C++] - C++ - Programmation
Marsh Posté le 12-04-2002 à 23:35:19
Deja, il semble que tu utilises des controles de fenetre dans tes objets de type "Joueur", ce qui me semble suspect (je fais jamais ca, mais peut-etre que c'est la maniere de faire Borland, encore que je ne sois pas sur que tu utilises Borland).
#include <vector>
typedef std::vector<TJoueur> JoueurVect;
JoueurVect vect;
vect.push_back(TJoueur(Form, blahblahblah));
Faire un vector de "TJoueur" (et pas de "TJoueur*" ) a l'inconvenient d'appeler le constructeur de copie quand tu ajoutes et supprimes des elements. Avec des controles (j'imagine que "TEdit" en est un), ca me parait foireux.
Alors tu peux faire un vector de "TJoueur*". L'inconvenient est que si tu oublies de supprimer les elements de ton vector => memory leak. Il faut que tu le fasses explicitement.
JoueurVect vect;
// remplissage ici
JoueurVect::iterator it = vect.begin();
// boucle sur tous les elements
while(it!=vect.end())
{
delete *it;
++it;
}
vect.clear();
Bref a toi de determiner ce que tu veux faire...
Marsh Posté le 12-04-2002 à 20:07:08
void main_loop(void)
{
AnsiString Nombre_joueurs;
while((Nombre_joueurs < 2) || (Nombre_joueurs > 4))
{
Nombre_joueurs = InputBox("Monopoly Junior", "Veuillez entrer le nombre de joueurs (entre 2 et 4).", "2" );
Nombre_joueurs.ToInt();
}
int nbre_player = 0;
int x_case_joueur = 15;
int couleur_pion = 1;
AnsiString InputString;
while(nbre_player < Nombre_joueurs)
{
nbre_player++;
InputString = InputBox("Monopoly Junior", "Veuillez entrez le nom du joueur " + nbre_player, "Joueur " + nbre_player);
TJoueur *essai = new TJoueur(Form1,0,couleur_pion + 1,31,true,InputString,x_case_joueur + 150,485);
vect_joueurs[nbre_player - 1].set_nom(InputString);
x_case_joueur = x_case_joueur + 150;
couleur_pion++;
}
*******************
class TJoueur
{
protected:
int no_case;
int couleur_pion;
int argent;
bool tour_a_jouer;
AnsiString nom_joueur;
TGroupBox *Groupe; //GroupBox pour entourer les données du joueur
int MX; //positions où se trouve le coin haut gauche du GroupBox
int MY;
TEdit *EditNom; //TEdit pour affiche le nom du joueur
TLabel *LabelPoints;
TEdit *EditPoints; //TEdit pour afficher les points du joueur
public:
TJoueur();
TJoueur(TForm*,int, int, int, bool, AnsiString, int, int);
~TJoueur();
int get_case();
int get_couleur_pion();
int get_argent();
bool get_tour_a_jouer();
AnsiString get_nom_joueur();
void set_case(int);
void set_couleur_pion(int);
void set_argent(int);
void set_tour_a_jouer(bool);
void set_nom_joueur(AnsiString);
void enleve_du_total(int);
void ajoute_au_total(int);
virtual void Affiche();
virtual void Efface();
};
Comment je pourrais faire pour mettre mes "joueurs" dans le vecteur ?? ( Biblio STL demandé ) ... je dois utiliser .push_back() pour ajouter un élément.. etc