j'ai une classe C_Interface qui contient entre autres un
vector<C_Joueur> joueurs;
lorsque que je déclare un objet C_Interface j'appelle le constructeur
logique qui prend en paramètre le nombre de joueurs, afin d'appeler le
constructeur logique de mon membre vector pour l'initialiser a n
joueurs.
j'ai cependant un problème que je n'arrive pas a résoudre.
en effet, j'aimerai pour chaque joueur, demander un nom. J'ai donc fait
le constructeur suivant pour l'objet C_Joueur :
C_Joueur::C_Joueur()
:scores(17) // grille de score du joueur
{
//[...]
savename(); // demande le nom du joueur
}
void
C_Joueur::savename()
{
cout << "Quel est ton nom ?" << endl <<"=> ";
cin >> nom;
}
et dans mon constructeur de C_Interface j'ai :
C_Interface::C_Interface(unsigned int nb_j)
:joueurs(nb_j)//,[...]
{
//[...]
}
le problème est que lors de l'instantiation de C_Interface, je pensais
qu'il me demanderai de taper nb_j fois le nom des joueurs (pensais
qu'il appelait pour chq case du vector le constructeur de C_Joueur)
mais en fait il me demande qu'une fois...
comment faudrait-il faire pour résoudre ce problème correctement ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
kanze
Nicolas Aunai ç wrote in message news:...
j'ai une classe C_Interface qui contient entre autres un vector<C_Joueur> joueurs;
lorsque que je déclare un objet C_Interface j'appelle le constructeur logique qui prend en paramètre le nombre de joueurs, afin d'appeler le constructeur logique de mon membre vector pour l'initialiser a n joueurs.
j'ai cependant un problème que je n'arrive pas a résoudre.
en effet, j'aimerai pour chaque joueur, demander un nom. J'ai donc fait le constructeur suivant pour l'objet C_Joueur :
C_Joueur::C_Joueur() :scores(17) // grille de score du joueur { //[...]
savename(); // demande le nom du joueur
}
void C_Joueur::savename() { cout << "Quel est ton nom ?" << endl <<"=> "; cin >> nom; }
Je n'aime pas trop ce démarche. J'aurais tendance à penser plutôt à un constructeur qui prend une chaîne comme paramètre. Ça me permettrait par exemple plus tard de lire des noms d'un fichier.
et dans mon constructeur de C_Interface j'ai :
C_Interface::C_Interface(unsigned int nb_j) :joueurs(nb_j)//,[...] {
//[...]
}
le problème est que lors de l'instantiation de C_Interface, je pensais qu'il me demanderai de taper nb_j fois le nom des joueurs (pensais qu'il appelait pour chq case du vector le constructeur de C_Joueur) mais en fait il me demande qu'une fois...
La norme dit que le vector serait rempli avec des copies.
Là non plus, j'ai des doutes. Je ne connais pas ta conception complète, mais j'ai comme une impression que ta classe Joueur est un objet « entité » qui ne doit pas supporter la copie.
A priori (mais c'est difficile d'être sûr sans en savoir plus), je verais plutôt quelque chose du genre :
Avec la création des joueurs ailleurs. (Mais c'est quoi, cette « Interface ». C'est un nom qui ne dit pas grand chose. Et je ne vois pas l'intérêt du C_ en préfixe non plus.)
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Nicolas Aunai <nicolas.aunai@virerça@free.fr> wrote in message
news:<mesnews.73947d3c.328dbef8.336.1437@free.fr>...
j'ai une classe C_Interface qui contient entre autres un
vector<C_Joueur> joueurs;
lorsque que je déclare un objet C_Interface j'appelle le constructeur
logique qui prend en paramètre le nombre de joueurs, afin d'appeler le
constructeur logique de mon membre vector pour l'initialiser a n
joueurs.
j'ai cependant un problème que je n'arrive pas a résoudre.
en effet, j'aimerai pour chaque joueur, demander un nom. J'ai donc
fait le constructeur suivant pour l'objet C_Joueur :
C_Joueur::C_Joueur()
:scores(17) // grille de score du joueur
{
//[...]
savename(); // demande le nom du joueur
}
void
C_Joueur::savename()
{
cout << "Quel est ton nom ?" << endl <<"=> ";
cin >> nom;
}
Je n'aime pas trop ce démarche. J'aurais tendance à penser plutôt à un
constructeur qui prend une chaîne comme paramètre. Ça me permettrait par
exemple plus tard de lire des noms d'un fichier.
et dans mon constructeur de C_Interface j'ai :
C_Interface::C_Interface(unsigned int nb_j)
:joueurs(nb_j)//,[...]
{
//[...]
}
le problème est que lors de l'instantiation de C_Interface, je pensais
qu'il me demanderai de taper nb_j fois le nom des joueurs (pensais
qu'il appelait pour chq case du vector le constructeur de C_Joueur)
mais en fait il me demande qu'une fois...
La norme dit que le vector serait rempli avec des copies.
Là non plus, j'ai des doutes. Je ne connais pas ta conception complète,
mais j'ai comme une impression que ta classe Joueur est un objet
« entité » qui ne doit pas supporter la copie.
A priori (mais c'est difficile d'être sûr sans en savoir plus), je
verais plutôt quelque chose du genre :
Avec la création des joueurs ailleurs. (Mais c'est quoi, cette
« Interface ». C'est un nom qui ne dit pas grand chose. Et je ne vois
pas l'intérêt du C_ en préfixe non plus.)
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
j'ai une classe C_Interface qui contient entre autres un vector<C_Joueur> joueurs;
lorsque que je déclare un objet C_Interface j'appelle le constructeur logique qui prend en paramètre le nombre de joueurs, afin d'appeler le constructeur logique de mon membre vector pour l'initialiser a n joueurs.
j'ai cependant un problème que je n'arrive pas a résoudre.
en effet, j'aimerai pour chaque joueur, demander un nom. J'ai donc fait le constructeur suivant pour l'objet C_Joueur :
C_Joueur::C_Joueur() :scores(17) // grille de score du joueur { //[...]
savename(); // demande le nom du joueur
}
void C_Joueur::savename() { cout << "Quel est ton nom ?" << endl <<"=> "; cin >> nom; }
Je n'aime pas trop ce démarche. J'aurais tendance à penser plutôt à un constructeur qui prend une chaîne comme paramètre. Ça me permettrait par exemple plus tard de lire des noms d'un fichier.
et dans mon constructeur de C_Interface j'ai :
C_Interface::C_Interface(unsigned int nb_j) :joueurs(nb_j)//,[...] {
//[...]
}
le problème est que lors de l'instantiation de C_Interface, je pensais qu'il me demanderai de taper nb_j fois le nom des joueurs (pensais qu'il appelait pour chq case du vector le constructeur de C_Joueur) mais en fait il me demande qu'une fois...
La norme dit que le vector serait rempli avec des copies.
Là non plus, j'ai des doutes. Je ne connais pas ta conception complète, mais j'ai comme une impression que ta classe Joueur est un objet « entité » qui ne doit pas supporter la copie.
A priori (mais c'est difficile d'être sûr sans en savoir plus), je verais plutôt quelque chose du genre :
Avec la création des joueurs ailleurs. (Mais c'est quoi, cette « Interface ». C'est un nom qui ne dit pas grand chose. Et je ne vois pas l'intérêt du C_ en préfixe non plus.)
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16