Bonjour,
Je suis en train de faire un monopoly en c++, mais là j'ai un problème d'erreur de segmentation que je n'arrive pas à résoudre.
Je suis débutant donc je sais pas si j'arriverai à l'expliquer clairement.
Je vais tout d'abord mettre une partie de mon code :
class cases
{
protected :
string nom;
int pos;
int prix;
int loyer;
string proprietaire;
public :
cases(string _nom, int _pos, string indice_case);
string get_nom();
virtual int get_prix();
virtual int get_loyer();
};
cases::cases(string _nom, int _pos, string indice_case)
{
nom=_nom;
pos=_pos;
proprietaire="aucun";
if(indice_case=="Gare")
prix=2500;
if(indice_case=="Propriete")
prix=_pos*1000;
if(indice_case=="Compagnie")
prix=2500;
if(indice_case=="Autre")
prix=0;
if(indice_case=="Gare")
loyer=500;
if(indice_case=="Propriete")
loyer=_pos*100;
if(indice_case=="Autre")
loyer=0;
if(indice_case=="Compagnie")
loyer=0;
}
class cPropriete : public cases
{
public :
cPropriete(int _pos) : cases("Propriete",_pos,"Propriete") {};
int get_loyer();
int get_prix();
};
class Plateau
{
public :
cases* table[2];
Plateau();
};
Plateau::Plateau()
{
table[1]=new cPropriete(25);
table[2]=new cPropriete(13);
}
Voila plusieurs scénario d'affichage :
int main()
{
Plateau test2;
cout<<test2.table[1]->get_prix()<<endl; //Affiche le loyer au lieu de prix
puts("ok"); //Affiche "ok" puis suivi d'erreur de segmentation, fin de l'éxécution
cout<<test2.table[1]->get_loyer()<<endl;
}
int main()
{
Plateau test2;
cout<<test2.table[1]->get_prix()<<endl; //Affiche le loyer au lieu de prix, puis suivi d'erreur de segmentation, FIN
}
int main()
{
Plateau test2;
cout<<test2.table[1]->get_loyer()<<endl; //Erreur de segmentation directe, FIN
puts("ok");
cout<<test2.table[1]->get_prix()<<endl;
}
Les méthodes get_loyer et get_prix retourne juste la valeur de loyer et de prix.
Voilà, si vous pouvez m'aider, merci d'avance, et puis au passge, pouvez vous me dire si ce code est bien structuré ou tout autre remarque qui pourrai me servir.
Merci encore.
Configuration: Linux
Firefox 3.0