Bonjour,
J'ai un souci avec mon programme. Je peux compiler et tout marche, mais lorsqu'une fonction est appelée le programme plante ("RPD.exe a cessé de fonctionner"). J'ai essayé le debugger et il me dit que j'ai une erreur de segmentation. J'ai pas mal cherché mais je n'arrive pas a le résoudre. Je sais que le problème vient de cette fonction :
où Case et Personnage sont deux classes, m_position un pointeur de type classe déclaré comme suit, et pointeZero la fonction ci-dessous :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void Personnage::deplacer(Case position) { m_position->pointeZero(); m_position=&position; }
Cette fonction est appelée selon le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void pointeZero(); void Case::pointeZero() {m_occupant = 0;} void deplacer(Case position); Case *m_position;
J'imagine que c'est un problème tout simple mais je débute, et les pointeurs sont encore une entité mystique à craindre....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int tailleX(5); int tailleY(5); Case tabCase[tailleX][tailleY]; //création d'un tableau de case std::vector<Personnage> persos; persos.push_back(Personnage("David")); persos.push_back(Personnage("Goliath")); for (int i=0;i<persos.size();i++) { cout << "Placez " << persos[i].getName() << " en inscrivant les coordonnees x puis y : "; cin >> posX; cin >> posY; persos[i].deplacer(tabCase[posX][posY]); }
Merci d'avance
Partager