IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Problème d'accés aux attributs de ma classe

  1. #1
    Invité
    Invité(e)
    Par défaut Problème d'accés aux attributs de ma classe
    Bonjour à tous!
    Tout d'abord, je vous préviens que je débute en Qt (et en C++ an même temps), et que ma question peut paraître stupide à certains programmeurs plus aguerris,... mais aidez-moi svp, je bloque
    Voici mon code:
    J'ai donc ma joulie classe Fenetre dans le fichier Fenetre.cpp, avec mon constructeur (qui définit l'interface graphique):
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    #include "Fenetre.h"
    #include <iostream>
     
    using namespace std;
     
    Fenetre::Fenetre()	
    {
        creerActions();
     
        setMinimumSize(450, 600);
        setMaximumSize(800, 800);
    }
     
    void Fenetre::creerActions()
    {
    	actionChargerFichier = new QAction(tr("Char&ger un fichier"), this);
            connect(actionChargerFichier, SIGNAL(triggered()), this, SLOT(chargerFichier()));
    }
     
    void Fenetre::chargerFichier()
    {
     	 QString cheminGrilleChargee = QFileDialog::getOpenFileName(this, tr("Ouvrir un fichier"), "/", tr("Fichiers (*.txt *.sdk *.data)"));
     	 int i=0, j=0;
     	 bool compatible = true;
     	 char c;
     	 QFile fichier(cheminGrilleChargee);
     	 fichier.open(QIODevice::ReadOnly);
     	 QLineEdit *cases[9][9];
    	 int tableau[9][9];
     
     	 while(i<9)
     	 {
    	  		   while(j<9)
    	  		   {
     	 		   			 cases[i][j] = new QLineEdit;
     
    						 fichier.getChar(&c);
     
    						 else if(c=='c')	
    						 {
    						 fichier.getChar(&c);
    						 QChar c2(c);
    						 QString string(c2);
    						 cases[i][j]->setText(string);
     
    						 tableau[i][j] = string.toInt();
    						 }
     
    						 else if(c=='r')
    						 {
                                                     fichier.getChar(&c);
                                                     tableau[i][j] = 0;
    						 }
     	 					 j++;
    				}  
     
    	 j=0;
     	 i++;
    	 }
     
    	 cout << tableau[0][0] << endl << tableau[5][4] << endl;
     
    	 QPushButton *boutonAfficher = new QPushButton;
    	 boutonValider->setText("Afficher!");
    	 connect(boutonAfficher, SIGNAL(clicked()), this, SLOT(affichageTableau()));
     
    }
     
    void Fenetre::affichageTableau()
    {
        cout << tableau[0][0] << endl << tableau[5][4] << endl;
    }
    Et la définition de ma classe dans Fenetre.h :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #ifndef HEADER_FENETRE
    #define HEADER_FENETRE
    #include <QtGui>
     
    class Fenetre : public QMainWindow
    {
     
        Q_OBJECT
     
    	public:
    		Fenetre();
     
           private:
                void creerActions();
                void chargerFichier();
     
    	private slots:
    	    void affichageTableau();
     
    	private:	        
    		QLineEdit *cases[9][9];
    		int tableau[9][9];
    };
     
    #endif
    Bien sûr, j'ai un peu coupé le code pour ne garder que ce qui pose problème.
    Parlons-en de ce problème: le cout dans chargerFichier() m'affiche correctement les valeurs attendues. Mais quand on passe au slot affichageTableau() (lors du clic sur boutonAfficher), le cout m'affiche un nombre qui me semble être une adresse mémoire. Mais ce n'est pas le nombre que j'attends...
    Au fait, au départ je pensais que c'était le passage des 3 changement de types (char vers QChar puis vers QString, et enfin vers int avec la méthode toint() ) qui posait problème, mais apparemment ce n'est pas le cas.
    Merci de m'expliquer mon erreur

  2. #2
    Membre habitué Avatar de duplo
    Inscrit en
    Octobre 2004
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2004
    Messages : 294
    Points : 172
    Points
    172
    Par défaut
    la conversion QString(QChar(char('4'))).toInt()

    te donnera bien 4 ( pour l'exemple ) ensuite es tu sur que c'est un nombre que tu récupère ?
    Quel genre de chiffre obtien tu au cout ?


    et attention
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QLineEdit *cases[9][9];
    	 int tableau[9][9];
    tu fais cette declaration et dans le .h et dans le .cc ...
    pensez au

  3. #3
    Invité
    Invité(e)
    Par défaut
    Comme je l'avais précisé, je suis débutant...
    En fait, c'est bien la double déclaration qui pose problème (faut que je relise mes cours moi ). Il suffit donc de ne déclarer qu'une fois chaque variable (dans les fonctions pour les variables locales, dans le h pour les attributs de la classe). Promis, je ne ferais plus jamais cette erreur (il y en a tant d'autres à faire ).
    Merci pour ton aide duplo

  4. #4
    Membre habitué Avatar de duplo
    Inscrit en
    Octobre 2004
    Messages
    294
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Octobre 2004
    Messages : 294
    Points : 172
    Points
    172
    Par défaut
    Citation Envoyé par Dreamker Voir le message
    Merci pour ton aide duplo
    On est la pour sa

    (pense a marquer le sujet resolu)
    pensez au

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2009, 15h56
  2. Problème d'acces aux attributs
    Par parano dans le forum C++
    Réponses: 3
    Dernier message: 16/03/2007, 16h29
  3. Problème d'accès aux méthodes d'une classe
    Par RR instinct dans le forum Langage
    Réponses: 5
    Dernier message: 26/06/2006, 14h51
  4. Réponses: 16
    Dernier message: 07/02/2006, 14h19
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo