Erreur : invalid use of non-static data member
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:
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:
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:
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:
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:
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é.