Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3167 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Boolean qui passe de true a false sans qu'on lui demande

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Boolean qui passe de true a false sans qu'on lui demande

n°1317384
Asmodean
Posté le 02-03-2006 à 21:26:50  profilanswer
 

Bonsoir tout le monde,
 
Je viens de tomber sur un os plutot gênant. Voila le tableau...j'ai une classe qui a un booleen en protected et un tableau d'un autre classe en private. Cette dernière peut donc accéder au booleen et verifier sa valeur... Le probleme c'est qu'avant de lancer une fonction x dans une fonction y (toutes deux de la deuxieme classe) j'affiche la valeur de ce booleen et juste a l'entrée de y je l'affiche aussi...et la suprise le booleen s'est inversé.
 
Voila le code si ca peut aider:
 
Mes deux classes

Code :
  1. class Board : public QLabel {
  2.     public:
  3.         Board( bool aiSet = false, int sizeOthellier = 0, QWidget *parent = NULL );
  4.         void resetBoard();
  5.         void initCases();
  6.         void putTileBoard( int x,int y,tile color );
  7.         int getSize(){ return size; };
  8.         bool getAi(){ return isAi; };
  9.         void setAiBoard( bool isSet ){};
  10.         tile getOthellierTile(int x,int y);
  11.     protected:
  12.         QPixmap *background;
  13.         QPixmap *whitePiece;
  14.         QPixmap *blackPiece;
  15.         bool isAi,waitingComp;
  16.     private:
  17.         Case ** tiles;
  18.         int size;
  19.         QPixmap *boardImage;
  20.         QLabel *playZone;
  21.         QVBoxLayout *layout;
  22.         QGridLayout *grid;
  23. };
  24. class Case : public Board {
  25.     Q_OBJECT
  26.     public:
  27.         Case( QWidget *parent = NULL );
  28.         tile getTile(){ return value; };
  29.         void setTile( tile newValue, bool beginning = false);
  30.         void setCoord(int x,int y);
  31.         void setParent(QWidget *parent);
  32.     public slots:
  33.         void setWhite();
  34.         void setBlack();
  35.         void updateTile( bool reset = false );
  36.     signals:
  37.         void clickedCase(int coordX,int coordY);
  38.     protected:
  39.         void mousePressEvent(QMouseEvent *event);
  40.         void mouseReleaseEvent(QMouseEvent *event);
  41.     private:
  42.         tile value;
  43.         QPoint *pressed;
  44.         bool erase;
  45.         int coordX,coordY;
  46.         QWidget *parent;
  47. };


 
Mes fonctions x et y:
 

Code :
  1. void Board::putTileBoard( int x, int y, tile color ){
  2.     if( x>=0 && y>=0 && x<size && y <size){
  3.         (isAi)?debug("true" ):debug("false" );
  4.         (tiles[x][y]).setTile(color,false);
  5.     }
  6.     else
  7.         debug("The programme try to modify a forbidden adress in function Board::putTileBoard" );
  8. }
  9. void Case::setTile( tile newValue, bool beginning){
  10.     (isAi)?debug("true" ):debug("false" );
  11.     value = newValue;
  12.     if(newValue == WHITE ){
  13.         if(!beginning && isAi) QTimer::singleShot(1000, this, SLOT( setWhite() ));
  14.         else{
  15.             setWhite();
  16.         }
  17.     }
  18.     else if(newValue == BLACK){
  19.         setBlack();
  20.     }
  21.     else clear();
  22. }


 
Je me sens un peu désemparé face a ce probleme....

mood
Publicité
Posté le 02-03-2006 à 21:26:50  profilanswer
 

n°1317397
Asmodean
Posté le 02-03-2006 à 21:52:52  profilanswer
 

Bon j'ai réglé mon problème en passant mon bool en parametre...ce qui me dit toujours pas ou est le problème...par curiosité ca m'intéresserait vraiment de savoir d'ou vient ce problème.

n°1317532
LeGreg
Posté le 03-03-2006 à 05:46:06  profilanswer
 

ben ce n'est pas la même variable
 
ton board a un tableau de cases et un boulet un "isAI_Board",  
Chaque case (i,j) de ton board dérive d'un board lui-même qui a un boulet un isAI_Case_i_j.
 
Donc quand tu changes la valeur de isAI_Board, tu ne changes pas automagiquement la valeur
de chaque isAI_Case_i_j
 
Bref c'est normal que ça ne marche pas.
 
Voilà.
LeGreg

n°1318231
KangOl
Profil : pointeur
Posté le 03-03-2006 à 23:03:49  profilanswer
 

ya problème de design la :o
 
ta classe Case n'a aucune raison de dériver de Board :o


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Boolean qui passe de true a false sans qu'on lui demande

 

Sujets relatifs
Demande de conseils pour SGBDChanger la couleur quand le souris passe dessus ?
Demande de Controleur Macromedia MXDemande d' aide sur les pointeurs
Mot de passe sur macro Exceldemande d'aide REQUETE COMPLEXE
Demande de conseil sur la methode la plus propre du code php ?Business objects en entreprise sa se passe comment ?
Session, cookie ou URL, demande de conseil 
Plus de sujets relatifs à : Boolean qui passe de true a false sans qu'on lui demande


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR