Bonjour à tous.
Je suis confronté à l'erreur suivante :invalid use of non-static data member 'MainWindow::m_initObjet' qDebug(MainWindow::m_initObjet->statutInitialisation);
Je vais tenter de vous expliquer le plus clairement possible ma démarche :
Le but recherché est de mettre à disposition les paramètres de connexion à un ftp.
Voici le main qui lance l'interface de l'application.
Avec le lancement de l'interface, je crée un objet d'initialisation qui va lire dans un fichier les paramètres nécessaires pour les mettre à disposition dans l'application :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
Voici la construction de l'interface :
avec extrait du fichier .h, comme quoi m_initObjet est bien public.
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 #include "mainwindow.h" #include "ui_mainwindow.h" #include "initialisation.h" #include "parametrage.h" #include <Qstring> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // la création de l'ojet d'initialisation m_initObjet = new initialisation; // ici l'accès à la méthode statutInitialisation fonctionne sans problème QString message = QString::fromStdString(m_initObjet->statutInitialisation()); this->statusBar()->showMessage(message); } MainWindow::~MainWindow() { delete m_initObjet; delete ui; }
et l'entête du fichier initialisation, avec sa méthode statutInitialisation, publique elle aussi :
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 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QString> #include"initialisation.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); initialisation *m_initObjet; private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
Ici je pense que l'objet m_initObjet est accessible de n'importe où dans le programme ainsi que sa méthode statutInitialisation().
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 INITIALISATION_H #define INITIALISATION_H #include <map> #include <string> class initialisation { public: initialisation(); ~initialisation(); std::string statutInitialisation(); protected : private: void checkInit(); std::string m_messageInit; std::map<std::string,std::string> parametres; std::map<std::string,std::string>::iterator itparam; }; #endif // INITIALISATION_H
Donc à partir d'une autre classe (dans une autre fenêtre de dialogue) je tente d'appeler cette méthode de la façon suivante :
Et là, rien ne va plus, j'obtiens l'erreur ci-dessus. Il semblerait que l'objet ne soit plus accessible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include "parametrage.h" #include "initialisation.h" #include "mainwindow.h" parametrage::parametrage(QWidget *parent) :QDialog(parent) { QString message = QString::fromStdString(MainWindow::m_initObjet->statutInitialisation()); qDebug(message); }
Merci par avance pour votre point de vue éclairé.
Partager