shinohinata01
Messages postés18Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 8 avril 2007
-
5 avril 2007 à 15:14
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 2010
-
8 avril 2007 à 17:37
Bonjour,
nous rencontrons actuellement un problème sur un de nos programmes qui traite d'un jeux d'échec.
en gros nous avons une fonction dans une classe qui doit déplacer des pièces sur l'échéquier mais il nous met des erreurs comme celle-ci au moment de l'affectation des déplacement de variable :
error C2109: subscript requires array or pointer type
Nous ne nous souvenons plus comment les résoudre...
voila notre bout de code qui pose problème
*************************************************
// piece1.cpp: implementation of the piece class.
//
//////////////////////////////////////////////////////////////////////
et voila la classe ou notre tableau a été déclaré et initialisé :
***************************************************
// partie.h: interface for the partie class.
//
//////////////////////////////////////////////////////////////////////
//Destructeur de la classe
virtual ~Partie(){
cout<<"appel du ~Partie"<<endl; if( j1 NULL && j2 NULL){
delete [] date;
cout<<"destruction de la partie"<<endl;
}
};
shinohinata01
Messages postés18Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 8 avril 2007 8 avril 2007 à 15:56
merci de ton aide mais c'est pas que je me serais pas plus entrainé avant mais c'est un projet qu'on a eu à faire en cours à l'IUT en C++ alors que l'on n'avait que très peu manipulé le C++ mais bon on se débrouille comme on peut c'est ça qu'est bein dans la programmation, l'entraide entre les genset le fait de découvrir des nouvelle choses tous les jours.
shinohinata01
Messages postés18Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 8 avril 2007 8 avril 2007 à 16:22
Il me dit que dans mes relations d'héritage ma classe Piece est : base class undefined et je me souviens plus comment on résout le problème je l'ai déja eu hier et je l'avais résolu mais j'ai pas percuté comment lol e tdu coup j'ai oublié!!
shinohinata01
Messages postés18Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 8 avril 2007 8 avril 2007 à 17:36
A toute les déclarations m'ont remis des erreurs j'y arrive pas!!!
Quel horreur... j'arrive pas à faire les déclaration de move il me dit que E est dans une partie privée....
Si je modifie en écrivant cela :
bool Piece::move(int x, int y) {
if (x != _x && y != _y)
return false;
if (partie.E[x][y] != NULL) {
partie.nombre_de_pieces[equipe]--;
delete partie.E[x][y];
}
partie.E[x][y] = this;
partie.E[_x][_y] = NULL;
return true;
}
dans le tour.cpp ca m'enleve des erreurs mais il me dit que cette déclaration n'est pas valable...
et si j'écris ca comme cela :
bool Tour::move(int x, int y) {
if (x != _x && y != _y)
return false;
if (partie.E[x][y] != NULL) {
partie.nombre_de_pieces[equipe]--;
delete partie.E[x][y];
}
partie.E[x][y] = this;
partie.E[_x][_y] = NULL;
return true;
}
et que je met celà dans la classe pièce :
virtual void Piece::move(int, int)=0;
ben ca met moins d'erreurs mais le meme message que celle d'avant...
shinohinata01
Messages postés18Date d'inscriptionjeudi 18 janvier 2007StatutMembreDernière intervention 8 avril 2007 8 avril 2007 à 17:36
A toute les déclarations m'ont remis des erreurs j'y arrive pas!!!
Quel horreur... j'arrive pas à faire les déclaration de move il me dit que E est dans une partie privée....
Si je modifie en écrivant cela :
bool Piece::move(int x, int y) {
if (x != _x && y != _y)
return false;
if (partie.E[x][y] != NULL) {
partie.nombre_de_pieces[equipe]--;
delete partie.E[x][y];
}
partie.E[x][y] = this;
partie.E[_x][_y] = NULL;
return true;
}
dans le tour.cpp ca m'enleve des erreurs mais il me dit que cette déclaration n'est pas valable...
et si j'écris ca comme cela :
bool Tour::move(int x, int y) {
if (x != _x && y != _y)
return false;
if (partie.E[x][y] != NULL) {
partie.nombre_de_pieces[equipe]--;
delete partie.E[x][y];
}
partie.E[x][y] = this;
partie.E[_x][_y] = NULL;
return true;
}
et que je met celà dans la classe pièce :
virtual void Piece::move(int, int)=0;
ben ca met moins d'erreurs mais le meme message que celle d'avant...
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 8 avril 2007 à 17:37
pour la classe indéfinie, vérifie qu'elle est déclarée avant les classes qui en héritent;
pour le tableau inaccessible, tu mets public: justeau dessus de la déclaration dans la classe Partie (pas très propre, faudrait déclarer les fonctions qui utilisent E friend, mais bon...)