A voir également:
- C++ remplir un tableau d'objet
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Organigramme a remplir word - Guide
- Imprimer un tableau excel - Guide
7 réponses
Le truc c'est que là on a qu'une partie du code il manque "De.h", "Joueur.h", "sept.h". Quelques recommandations de programmation :
1) nommer les fichiers c++ uniquement en minuscules avec l'extension hpp (par exemple de.hpp) pour les différencier des headcers en C,
2) main est sensé retourner un int (code d'exécution, 0 si tout va bien)
3) le "using namespace std;" ne devrait être utilisé en toute rigueur que dans les fichiers sources (.cpp).pour ne pas risquer de se propager dans des fichiers qui ont besoin d'isoler le namespace std.
Pour écrire dans :
... il faut que tab soit au moins de taille "taille + 1", ainsi la case tab[taille] est allouée et peut être modifiée. Malheureusement comme il manque le header on ne sait pas de quel type est tab (si c'est un std::vector tu peux utiliser la méthode resize(), si c'est un tableau il faut l'allouer (par exemple avec un new dans le constructeur et le désallouer avec delete dans le destructeur).
Bonne chance
1) nommer les fichiers c++ uniquement en minuscules avec l'extension hpp (par exemple de.hpp) pour les différencier des headcers en C,
2) main est sensé retourner un int (code d'exécution, 0 si tout va bien)
3) le "using namespace std;" ne devrait être utilisé en toute rigueur que dans les fichiers sources (.cpp).pour ne pas risquer de se propager dans des fichiers qui ont besoin d'isoler le namespace std.
Pour écrire dans :
//tab[taille]=UnJoueur; ici ca BUGGGG
... il faut que tab soit au moins de taille "taille + 1", ainsi la case tab[taille] est allouée et peut être modifiée. Malheureusement comme il manque le header on ne sait pas de quel type est tab (si c'est un std::vector tu peux utiliser la méthode resize(), si c'est un tableau il faut l'allouer (par exemple avec un new dans le constructeur et le désallouer avec delete dans le destructeur).
Bonne chance
Tab contient des objets de types Joueur, j'ai essaye d'enlever le using namespace std dans les .h mais ca m'affichaient des erreurs...
Voici la suite manquante
************************sept.h******************************
#ifndef __sept_INCLUS__
#define __sept_INCLUS__
#include <iostream>
#include "Joueur.h"
#include <string>
using namespace std ;
class sept {
Joueur *adr;
int nbrJoueur,taille;
//Joueur tab[10];
public:
sept();
sept(int);
~sept();
sept(sept &);
void operator = (sept &);
string getJoueur(int);
void participant(Joueur &);
int partie();
void affiche();
};
************************De.h*************************
#endif
#ifndef __DE_INCLUS__
#define __DE_INCLUS__
/*
Dans le fichier du jeu incluant des dés
#include <ctime>
dans le constructeur du jeu
srand(time(NULL));
*/
class De
{
int valeur;
public:
De();
~De();
De(De &);
void operator = (De &);
int getVal();
int lancer();
};
#endif //__DE_IN
*******************************De.cpp*******************
#include <cstdlib>
#include "De.h"
De::De()
{
lancer();
}
De::~De()
{
}
De::De(De & d)
{
valeur = d.valeur;
}
void De::operator = (De & de){
De des;
des= de;
}
int De::getVal()
{
return valeur;
}
int De::lancer()
{
return valeur = 1 + (rand() % 6);
}
**************************Joueur.h**************************************
#ifndef __Joueur_INCLUS__
#define __Joueur_INCLUS__
#include <string>
using namespace std;
class Joueur
{
string nomJoueur;
public:
Joueur();
Joueur(string);
~Joueur();
Joueur(Joueur &);
void operator =(Joueur &);
string getVal();
};
#endif
*********************Joueur.cpp************************
#include <cstdlib>
#include "Joueur.h"
using namespace std;
Joueur::Joueur(){
}
Joueur::Joueur(string joueur){
nomJoueur=joueur;
}
Joueur::~Joueur(){
}
Joueur::Joueur(Joueur & player){
nomJoueur = player.nomJoueur;
}
void Joueur::operator = (Joueur & player){
Joueur joueur;
joueur=player;
}
string Joueur::getVal(){
return nomJoueur;
}
************************sept.h******************************
#ifndef __sept_INCLUS__
#define __sept_INCLUS__
#include <iostream>
#include "Joueur.h"
#include <string>
using namespace std ;
class sept {
Joueur *adr;
int nbrJoueur,taille;
//Joueur tab[10];
public:
sept();
sept(int);
~sept();
sept(sept &);
void operator = (sept &);
string getJoueur(int);
void participant(Joueur &);
int partie();
void affiche();
};
************************De.h*************************
#endif
#ifndef __DE_INCLUS__
#define __DE_INCLUS__
/*
Dans le fichier du jeu incluant des dés
#include <ctime>
dans le constructeur du jeu
srand(time(NULL));
*/
class De
{
int valeur;
public:
De();
~De();
De(De &);
void operator = (De &);
int getVal();
int lancer();
};
#endif //__DE_IN
*******************************De.cpp*******************
#include <cstdlib>
#include "De.h"
De::De()
{
lancer();
}
De::~De()
{
}
De::De(De & d)
{
valeur = d.valeur;
}
void De::operator = (De & de){
De des;
des= de;
}
int De::getVal()
{
return valeur;
}
int De::lancer()
{
return valeur = 1 + (rand() % 6);
}
**************************Joueur.h**************************************
#ifndef __Joueur_INCLUS__
#define __Joueur_INCLUS__
#include <string>
using namespace std;
class Joueur
{
string nomJoueur;
public:
Joueur();
Joueur(string);
~Joueur();
Joueur(Joueur &);
void operator =(Joueur &);
string getVal();
};
#endif
*********************Joueur.cpp************************
#include <cstdlib>
#include "Joueur.h"
using namespace std;
Joueur::Joueur(){
}
Joueur::Joueur(string joueur){
nomJoueur=joueur;
}
Joueur::~Joueur(){
}
Joueur::Joueur(Joueur & player){
nomJoueur = player.nomJoueur;
}
void Joueur::operator = (Joueur & player){
Joueur joueur;
joueur=player;
}
string Joueur::getVal(){
return nomJoueur;
}
mais j'emplois adr comme tableau d'objet Joueur, je viens d'essayer avec une taille+1 mais ca plante toujours...
Arf je m'arrache les cheveux.
Arf je m'arrache les cheveux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'ai change le main mais ca plante tjrs .... :(
sept * s;
int nbrJoueur,de;
string nom;
cout << "quel est le nombre de joueur ?"<< endl;
cin >> nbrJoueur;
//sept s=sept::sept(nbrJoueur);
//sept s(nbrJoueur);
s= new sept(nbrJoueur);
for (int i=0;i<nbrJoueur;++i) {
Joueur j=inscrireJoueur();
s[i].participant(j);
}
do
{
sept * s;
int nbrJoueur,de;
string nom;
cout << "quel est le nombre de joueur ?"<< endl;
cin >> nbrJoueur;
//sept s=sept::sept(nbrJoueur);
//sept s(nbrJoueur);
s= new sept(nbrJoueur);
for (int i=0;i<nbrJoueur;++i) {
Joueur j=inscrireJoueur();
s[i].participant(j);
}
do
{
Peux tu mettre une archive de ton code sur cjoint (avec un makefile pour compiler) et me donner l'adresse.
https://www.cjoint.com/
Bonne chance
https://www.cjoint.com/
Bonne chance