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 :

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;
}
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
6
 
void pointeZero();
void Case::pointeZero()   {m_occupant = 0;}
 
void deplacer(Case position);
Case *m_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
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]);
    }
J'imagine que c'est un problème tout simple mais je débute, et les pointeurs sont encore une entité mystique à craindre....

Merci d'avance