Accès aux données d'une autre classe

Signaler
Messages postés
1
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
1 mai 2009
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

J'essaye de développer une application avec une interface graphique en C++ et en utilisant les librairies de dévellopement STL et QT.

J'ai créé une classe principale dont le but est d'afficher une fenêtre qui contiendra plusieurs onglets, et chaque onglet sera codé dans une classe différente.

Dans la classe principale j'ai une donnée membre qui est une classe contenant 4 "vector" sur différents types d'objets, et je voudrais que chaque classe définissant un onglet est accès à cette donnée membre de la classe principale. Le problème est que je n'y arrive pas...

Pouvez-vous m'indiquer les manières dont je pourrai m'y prendre svp car la je galère un peu.

Merci d'avance

Pour information voila les codes des différentes classes qui vous seront utiles pour mieux comprendre mon problème :

class Donnees
{
    private :
        std::vector listePersonnes;
        std::vector <Conference *> listeConferences;
        std::vector listeArticles;
        std::vector <Review *> listeReviews;

    ...
};

#include <QTabWidget>
#include "OngletSoumissionArticle.h"
#include "Donnees.h"

class FenetreOnglets : public QDialog
{

    private :
        Donnees* mesDonnees;
        QTabWidget* tabBar;
        int tabSoumissionArticle;
        OngletSoumissionArticle* monOngletSoumissionArticle;

    public :
        FenetreOnglets(QWidget* parent = 0);

    ...
};

FenetreOnglets::FenetreOnglets(QWidget* parent):QDialog(parent)
{
    tabBar = new QTabWidget(this);
    monOngletSoumissionArticle = new OngletSoumissionArticle();
    tabSoumissionArticle = tabBar->addTab(monOngletSoumissionArticle, tr("Soumission d'un article"));
}

class OngletSoumissionArticle : public QWidget
{
    private :
        ...
        QListWidget* listeBoxConference;

    public :
        OngletSoumissionArticle(QWidget* parent = 0);
        ...
};

OngletSoumissionArticle::OngletSoumissionArticle(QWidget* parent):QWidget(parent)
{
    std::vector<Conference *>::iterator itConference;
    listeBoxConference = new QListWidget(this);

//ici je voudrai inclure dans la liste déroulante la liste des conferences contenues dans le vector listeConferences contenu dans la classe Donnees présents dans la fenetre principale

}

1 réponse

Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
Bienvenue,

Bin tu peux ajouter tes vectors en entrée du constructeur de OngletSoumissionArticle, ou ajouter un setter. Cela te permettra d'affecter un nouveau champ "Donnees* mesDonnees;" ajouté à ta classe OngletSoumissionArticle.

Quelque chose comme ça :
<hr size="2" width="100%" />#include

using namespace std;

class Donnees
{
    public :
        Donnees(string value): _value(value) {}
        void Aff() { cout << _value << endl; }
    private :
        string _value;
};

class OngletSoumissionArticle
{
    public :
        OngletSoumissionArticle(Donnees *donnees): mesDonnees(donnees) {}
        void Aff() { mesDonnees->Aff(); }
    private :
        Donnees* mesDonnees;
};

class FenetreOnglets
{
    private :
        Donnees* mesDonnees;
        OngletSoumissionArticle* monOngletSoumissionArticle;
    public :
        FenetreOnglets()
        {
           mesDonnees = new Donnees("Hello world !");
           monOngletSoumissionArticle = new OngletSoumissionArticle(mesDonnees);
           monOngletSoumissionArticle->Aff();
           //tabSoumissionArticle = tabBar->addTab(monOngletSoumissionArticle, tr("Soumission d'un article"));
           delete monOngletSoumissionArticle;
           delete mesDonnees;
        }
};

int main()
{
  FenetreOnglets();
  return 0;
}