[c++] Projet Céphalopod - Problème avec constructeur

Voir le sujet précédent Voir le sujet suivant Aller en bas

[c++] Projet Céphalopod - Problème avec constructeur

Message  laurent1480 le Ven 17 Déc 2010, 15:48

bonjour,
j'ai un problème au niveau du constructeur de ma classe Plateau...
(les classes utilisées dans le projet)

Couleur (enum) : {Sans,Blanc,Noir}
De :
int valeur,
Couleur couleur;
Joueur :
Chaine nom, (Chaine réf: cours c++)
Couleur couleur ;
Plateau :
<vector <vector<De> > tableau ;
Jeu :
Plateau plateau,
Joueur joueurs[2],
Joueur joueurCourant,
bool termine;

le constructeur par defaut De :
Code:
#include "De.h"
De::De() {
   valeur=0;
   couleur=SANS;
}

le constructeur par defaut Plateau :
Code:
#include "Plateau.h"
Plateau::Plateau() {
        tableau.resize(5,vector<De>(5));
}
dans le main.cpp
Code:
Plateau unPlateau;

=> à la compilation OK, lors de l'execution message d'erreur...

je ne trouve pas d'où vient le problème, quelqu'un aurait il une solution? confused
merci

laurent1480

Nombre de messages : 6
Prénom : Laurent
Date d'inscription : 16/02/2010

Revenir en haut Aller en bas

Re: [c++] Projet Céphalopod - Problème avec constructeur

Message  smb le Ven 17 Déc 2010, 17:39

Comme quoi quand on ne donne pas tout le code il est impossible que quelqu'un puisse aider le posteur du message !
Merci donc de me l'avoir envoyé.

En effet le problème vient du constructeur par défaut de Joueur où tu fais
Code:
Joueur() {
nom=0;
couleur=SANS;
}
Or nom est une Chaine (voir cours) et donc ce qui se passe est ceci:
nom=0; --> nom=Chaine(0) --> boom (le problème est le même s'il s'agit d'un std::string)
puisque le paramètre est un const char * et que 0 est pris pour l'adresse absolue 0 en mémoire.

J'en profite pour rappeler que la classe Chaine vue au cours pour introduire plusieurs topics du C++ n'est en aucun cas une classe terminée et complète !
Elle contient d'ailleurs, comme je l'ai dit au cours des exemples de ce qui ne faut pas faire :
getSTR --> qui retourne un accès direct à la chaîne interne "C like"
etc...
En plus, tu y as ajouté toi-même des méthodes réalisant de l'affichage sur stdout !
afficherChaine --> à bannir dans les classes "métier"

Bien qu'il soit possible d'utiliser pour le projet le minimum de la classe Chaine vu au cours, je vous invite à utilisez plutôt std::string !



santa

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum