IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Partage de QVector entre classes

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 54
    Points
    54
    Par défaut Partage de QVector entre classes
    Bonjour,

    dans le code que je suis actuellement en train de développer, je souhaite partager une mémoire (QVector<QVector<double>>) entre plusieurs fonctions. Malheureusement, je ne parviens pas à transférer les données. Pourriez-vous m'aider ? Merci d'avance.

    mainWindow.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        QVector<QVector<double>> m_elevResults;
    mainWindow.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        tab2 = new tabAnalysis(m_elevResults);
        tab3 = new tabSchedule(m_elevResults);
    Mes classes tabAnalysis et tabSchedule :

    tabAnalysis.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class tabAnalysis
    tabAnalysis(QVector<QVector<double>> & elevResults, QWidget * parent) : QWidget(parent);
     
    public:
    	compute();
    private:
        QVector<QVector<double>> m_elevResults;
    tabAnalysis.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    tabAnalysis(QVector<QVector<double>> & elevResults, QWidget * parent) : QWidget(parent) {
    	m_elevResults = elevResults; // Transfer elevResults internally to allow being accessed by all the member functions of the class
    }
     
    tabAnalysis::compute() {
    	// Valorise elevResults (appelé en premier grâce à l'IHM)
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class tabSchedule
    tabSchedule(QVector<QVector<double>> & elevResults, QWidget * parent) : QWidget(parent);
     
    public:
    	read();
    private:
        QVector<QVector<double>> m_elevResults;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    tabSchedule.cpp
    tabSchedule(QVector<QVector<double>> & elevResults, QWidget * parent) : QWidget(parent) {
    	m_elevResults = elevResults; // Transfer elevResults internally to allow being accessed by all the member functions of the class
    }
     
    tabSchedule::read() {
    	// Lit elevResults (appelé en second grâce à l'IHM)
    }
    Mon problème est que dans la fonction read de tabSchedule, le tableau est vide. J'ai l'impression que le fait de passer QVector en référence ne permet à la fonction compute de tabAnalysis d'écrire dans elevResults.

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    Pour garder une référence, il faut utilises les références.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tabAnalysis(QVector<QVector<double>> & elevResults, QWidget * parent)
     : QWidget(parent) ,  m_elevResults (elevResult) {
    }
    // avec
    private:
        QVector<QVector<double>>& m_elevResults;
    Et il est préférable d'utiliser plutôt des références constantes si possible.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 127
    Points : 54
    Points
    54
    Par défaut
    Ok, je comprends que c'était la classe tabAnalysis qui crée une copie locale lors de l'assignation m_elevResults = elevResults ? Merci, ça fonctionne bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Partage de mémoire entre classes
    Par julieng31 dans le forum C++
    Réponses: 12
    Dernier message: 01/10/2013, 23h15
  2. partage de sémaphores entre classe
    Par ernie74 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 07/02/2012, 09h19
  3. Réponses: 3
    Dernier message: 21/01/2008, 00h35
  4. partager un objet entre classes
    Par kirua2150 dans le forum Access
    Réponses: 5
    Dernier message: 26/01/2007, 11h33
  5. Réponses: 7
    Dernier message: 06/04/2006, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo