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.

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();
}
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 :

Voici la construction de l'interface :
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;
}
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
 
#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
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
 
#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
Ici je pense que l'objet m_initObjet est accessible de n'importe où dans le programme ainsi que sa méthode statutInitialisation().

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 :

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);
}
Et là, rien ne va plus, j'obtiens l'erreur ci-dessus. Il semblerait que l'objet ne soit plus accessible.

Merci par avance pour votre point de vue éclairé.