3 réponses
Il est d'usage de nommer les classes avec une majuscule, ici 'Joueur'.
La fonction 'Affiche' est définie ensuite en tant qu' 'affiche'.
Il y a 2 fonctions 'void' qui retournent quelque chose !
char joueur::*getnom() se déclare plutôt comme 'char* joueur::getnom()'.
joueur.nom=nom n'a aucuns signification; il faut mettre 'this->nom = nom'.
strcpy (this->nom,nom); n'est pas très sécurisé et restrictif. C'est justement dans la classe qu'il faut faire les contrôles nécessaires et les réservations mémoires adéquates; dommage de ne pas en profiter.
Bonne continuation.
La fonction 'Affiche' est définie ensuite en tant qu' 'affiche'.
Il y a 2 fonctions 'void' qui retournent quelque chose !
char joueur::*getnom() se déclare plutôt comme 'char* joueur::getnom()'.
joueur.nom=nom n'a aucuns signification; il faut mettre 'this->nom = nom'.
strcpy (this->nom,nom); n'est pas très sécurisé et restrictif. C'est justement dans la classe qu'il faut faire les contrôles nécessaires et les réservations mémoires adéquates; dommage de ne pas en profiter.
Bonne continuation.
Mais il me met une erreur ici :
char* joueur::getnom()
{
return *nom;
};
J'ai fait la modif que tu ma dit mais il me met la ligne d'erreur sur le returne :s
Merci de m'avoir répondu.
char* joueur::getnom()
{
return *nom;
};
J'ai fait la modif que tu ma dit mais il me met la ligne d'erreur sur le returne :s
Merci de m'avoir répondu.
Voila, je compile, il ne me sort pas d'éreur et il ne se passe rien donc je pense que c'est bon il faut que je face le main, voici mon code final d'après vos réponses et si j'ai bien compris lol :
//Le programme de crée 2 objets joueurs, de les afficher ( nombre de points = 0 ).
//Ensuite on saisit le score de chaque joueur et on affiche le gagnant et la meme des points.
//Statique et Dynamique.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
class joueur
{
private :
char nom[20];
int points;
public :
joueur(char *nom, int points);
char *getnom();
int getpoints();
void setnom(char *nom);
void setpoints(int points);
void affiche();
};
joueur::joueur(char *nom, int points)
{
strcpy(this->nom,nom);
this->points=points;
};
char* joueur::getnom()
{
return nom;
};
int joueur::getpoints()
{
return points;
};
void joueur::setnom(char *nom)
{
};
void joueur::setpoints(int points)
{
};
void joueur::affiche()
{
};
//Le programme de crée 2 objets joueurs, de les afficher ( nombre de points = 0 ).
//Ensuite on saisit le score de chaque joueur et on affiche le gagnant et la meme des points.
//Statique et Dynamique.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
class joueur
{
private :
char nom[20];
int points;
public :
joueur(char *nom, int points);
char *getnom();
int getpoints();
void setnom(char *nom);
void setpoints(int points);
void affiche();
};
joueur::joueur(char *nom, int points)
{
strcpy(this->nom,nom);
this->points=points;
};
char* joueur::getnom()
{
return nom;
};
int joueur::getpoints()
{
return points;
};
void joueur::setnom(char *nom)
{
};
void joueur::setpoints(int points)
{
};
void joueur::affiche()
{
};
Une fonction qui ne retourne rien, ne signifie pas que le corps de cette fonction ne contient rien; sinon, à quoi la fonction sert-elle ?
Par exemple:
Bonne continuation.
Par exemple:
void joueur::setpoints(int points) { this->points = points; };D'autre part si la création d'un joueur se fait avec 0 points, il serait préférable de créer ainsi le constructeur, avec suppression du tableau 'nom':
class Joueur { private : char* nom; int points; public : Joueur(char* nomJoueur); ~Joueur { free(nom); } void setNom(char* nouveauNom); ... }; Joueur::Joueur(char* nomJoueur) { points = 0; nom = 0; setNom(nomJoueur); } Joueur::setNom(char* nouveauNom) { free(nom); nom = malloc(strlen(nomJoueur)+1); strcpy (nom, nomJoueur); }Les autres fonctions sont inchangées.
Bonne continuation.
7 oct. 2009 à 15:11
return *nom, non c'est 'return nom;';
this->nom = nom, non c'est 'strcpy(this->nom, nom);'.
Comme aucun espace de nommage n'est défini, il faut mettre 'std:cout'.
Bon après-midi.
7 oct. 2009 à 15:24
void joueur::setnom(char *nom)
{
return strcpy(this->nom,nom);
};
au niveau du return.
Merci
7 oct. 2009 à 15:30
7 oct. 2009 à 15:35
7 oct. 2009 à 15:47