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 :

Méthode qui retourne un QVector ?

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut Méthode qui retourne un QVector ?
    Bonjour,

    Je souhaite créer une méthode qui me renvoie un QVector lorsque je l'appelle, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Classe cVector;
    QVector<QString> vTest;
     
    vTest = cVector.getVector();
     
    qDebug() << vTest;
    Voyant que ça ne fonctionne pas, je me demande comment arriver au résultat souhaité :
    - Faire une méthode qui modifie mon vecteur avec le contenu de celui que je veux ? Pointeurs peut-être ? Je débute donc pas encore très à l'aise avec...
    - Faire une méthode qui me sort directement le QVector lorsque je l'appelle ?

    Voici mon code actuel :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    /* classe.h */
     
    #ifndef CLASSE_H
    #define CLASSE_H
    #include <QVector>
     
    class Classe
    {
    public:
    	int store(QVector<QString> vector);
    };
     
    #endif // CLASSE_H
     
     
    /* classe.cpp */
     
    #include <iostream>
    #include <QVector>
    #include <QString>
    #include <QtCore>
    #include "classe.h"
     
    int Classe::store(QVector<QString> vector)
    {
    	QVector<QString> a(0);
    	a.append("One");
    	a.append("Two");
    	vector = a;
    	return 0;
    }
     
     
    /* main.cpp */
     
    #include <iostream>
    #include <QtCore>
    #include <QString>
    #include <QVector>
    #include <classe.h>
     
    using namespace std;
     
    int main() {
     
    	Classe qv;
    	QVector<QString> test;
    	qv.store(test);
    	qDebug() << test;
    	return 0;
     
    }
    Il me renvoie un QVector nul.

    Votre aide et conseils seraient les bienvenus

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 145
    Par défaut
    Deux méthodes que j'identifie :

    - passer un pointeur sur QVector en paramètre de Classe::store().
    Cela te permettra de modifier ce QVector et non une copie ;

    - faire en sorte que Classe::store() retourne un QVector.

    Dans ton main, "test" est en effet nul, car tu utilises un passage de paramètre par valeur.

    Crois bien que je déteste dire ça, mais il faudrait que tu ailles lire un cours

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le problème est que tu passes ton QVector par valeur, tu te retrouves donc avec une copie de test dans ta fonction. Et donc modifier une copie n'aura aucune influence sur son contenu.

    Je te conseille la lecture de la FAQ les références à préférer au pointeur.

  4. #4
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut
    Merci à vous deux. Oui je galère un peu avec les pointeurs, je comprends bien le principe mais j'ai du mal à savoir quand les utiliser ou non.

    GilbertLaTranche, ne t'inquiète pas je fais que ça de lire des cours ! Je suis sur un projet personnel avec lequel je compte apprendre le C++, donc je bute par moment mais ça avance bien dans l'ensemble

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

Discussions similaires

  1. Méthode qui retourne un objet de type ostream
    Par systemofaxav dans le forum C++
    Réponses: 4
    Dernier message: 11/04/2009, 17h35
  2. méthode qui retourne un tableau de chaines de caracteres
    Par Camel200 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/02/2009, 15h36
  3. Réponses: 5
    Dernier message: 29/05/2008, 10h05
  4. une méthode qui retourne une valeur
    Par soujava dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 17/04/2008, 14h29
  5. Réponses: 7
    Dernier message: 19/03/2007, 19h24

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