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 :

Une fonction qui retourne un QVector

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Par défaut Une fonction qui retourne un QVector
    Bonjour,

    Comment je peux créer une fonction qui retourne un vecteur sous Qt s'il vous plaît ?
    Et comment l'appeler au niveau du main ?
    Je fais comme suit et ça marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QVector <double> NomFonction (int t)
    {
    }
     
    //dans main
    QVector <double>NomFonction  (t);

  2. #2
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour.

    C'est un principe assez basique qui n'est pas lié spécifiquement à Qt mais aux langages de programmation.

    En C++
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //Définition ma fonction
    Type nomDeFonction(int param) {/***/}
     
    //Utilisation de la fonction
    Type mavariable;
    int monparam = 0;
    mavariable = nomDeFonction(monparam);

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Tu crées la fonction exactement comme si elle devait renvoyer un entier, en adaptant simplement le type de retour au type de donnée qui t'intéresse...

    Ainsi, si tu avais une fonction addTwo, elle ressemblerait à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int addTwo(int initial){
       return initial + 2;
    }
    Hé bien, ta fonction renvoyant un QVector<int> ressemblera à quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QVector<int> nomDeLaFonction(/* paramètres éventuels */){
        QVector<int> temp;
        /* on remplit le tableau */
        return temp;
    }
    Quant à l'appel, c'est pareil : il "suffit" d'adapter le type de la donnée qui récupère la valeur de retour. Ainsi, l'appel de ta fonction addTwo ressemblerait à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int result  = addTwo(5);
    // on peut utiliser result à notre guise ici
    Hé bien, l'appel de ta fonction renvoyant un QVector<int> ressemblera à quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QVector<int>  result = nomDeLaFonction(/* arguments requis */);
    // on peut utiliser result à notre guise ici
    Notes enfin que, depuis C++11, on dispose de ce que l'on appelle l'inférence de type, qui nous permet de demander au compilateur de déterminer de lui-même le type de donnée qui sera renvoyé par une fonction à l'aide du mot clé auto, sous une forme (pour ce qui concerne addTwo) proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    auto result = addTwo(10); // le compilateur déterminera de lui meme que result est un int
    // on peut utiliser result à notre guise ici
    et que l'on peut faire exactement pareil avec la fonction qui renverra un QVector<int> sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    auto  result = nomDeLaFonction(/* arguments requis */);// le compilateur déterminera de lui meme que result est un QVector<int>
    // on peut utiliser result à notre guise ici
    L'approche actuelle tend à s'orienter vers un conseil que l'on appelle AAA (pour Almost Always Auto ou, si tu préfères en francais, presque toujours auto), si bien que ce sera en définitive cette dernière forme que nous ne pouvons que t'inciter à utiliser de préférence
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Février 2011
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 221
    Par défaut
    Merci infiniment pour vos réponses

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

Discussions similaires

  1. Une fonction qui retourne un tableau
    Par DooSquare dans le forum C
    Réponses: 18
    Dernier message: 04/07/2007, 20h15
  2. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  3. DLL:exporter une fonction qui retourne un pointeur
    Par ephemeride dans le forum C++
    Réponses: 2
    Dernier message: 29/09/2006, 11h42
  4. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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