Getter sur un pointeur de classe abstraite qui fait crash
Bonjour,
Je suis toujours sur mon projet étudiant de casse brique. Je suis confronté depuis quelques jours à un problème.
Je souhaite diffuser un id dans mes formes pour pouvoir les reconnaître. J'ai quelques classes (raquette, balle, brique,...) qui héritent de forme et que je souhaite pouvoir identifier, pour connaître le contenu de mon pointeur forme * dans le code suivant (il peut aussi bien pointer sur un raquette que sur une balle, etc):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| void balle::collision(const listeforme &liste)
{
float x,y;
forme * pforme;
for(int i = 0; i<4; i++)
{
x= scout[i].getx();
y= scout[i].gety();
pforme = liste.selection(x,y);//.selection(x,y);
if((pforme!=this)&&(pforme!=NULL))
{
pforme->collision(this,i);
}
}
//Fin de partie
if(pforme->getIdforme()==1) //si c'est une raquette
{
//Traitement
}
... |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| class forme
{
public:
...
virtual int getIdforme();
protected:
int idforme;
...
private:
};
.
.
.
int forme::getIdforme()
{
return idforme;
} |
Or le test suivant provoque le plantage de mon programme :
Code:
if(pforme->getIdforme()==1)
Le compilateur ne m'affiche aucune erreur, j'ai plus l'impression d'accéder à une partie de la mémoire qui ne m'appartient pas bizarrement.
Si vous avez besoin de plus de détail, n'hésitez pas à me demander des précisions.
Je vous remercie d'avance pour l'aide que vous pourrez m'apportez.