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

cs_ArkSer78 Messages postés 1 Date d'inscription vendredi 24 février 2006 Statut Membre Dernière intervention 1 mai 2009 - 1 mai 2009 à 11:07
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 10 mai 2009 à 14:33
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

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
10 mai 2009 à 14:33
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;
}
0
Rejoignez-nous