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

C++ Discussion :

Passage vecteur de données en paramètre d'une fonction


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 145
    Points : 9
    Points
    9
    Par défaut Passage vecteur de données en paramètre d'une fonction
    Bonjour, je n'arrive pas à passer un vecteur de données en paramètre d'une fonction.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vector<Data>tableau;     // vector tableau de type structure Data (définie plus haut)
                Data donnees;            // variable donnees de type structure Data

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ValeursRetour CalculDefautPosition(double position, string chemin)
    {
    ...
    tableau.push_back(donnees); // Stockage de toutes les données dans le vector tableau

    Je voudrais faire passer ce tableau dans une fonction mais cela ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    analyserValeursColonnes(tableau, colTx, position);

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void analyserValeursColonnes(vector<data> tableau, int nbLignes, int position)
    {
    ...
    }
    Le compilateur m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: invalid types 'int[int]' for array subscript

    Merci de votre aide.

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    M'enfin, on ne peut pas t'aider si tu poste ce genre de message.
    On ne sait même pas à quelle ligne l'erreur s'applique. Il y a des bouts de code à droite à gauche on ne sait même pas dans quel ordre...

    pfff...
    bon ce que je peux faire, c'est te donner un exemple de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void UneFonction( std::vector<int> & mon_vecteur )
    {
       mon_vecteur.push_back( 2 );
    }
     
    int main()
    {
       std::vector<int> v;
       UneFonction( v );
       return 0;
    }
    A noter:
    -> Le vecteur est passé par référence. S'il est passé par valeur, une copie de ce vecteur est effectuée et on perd donc les modifications effectuées sur ce vecteur dans la fonction. Voir la faq.
    -> Dans cet exemple j'utilise un vector<int>, mais on peut mettre n'importe quel type à la place de int (c'est le principe même des templates). Il faut juste que ce type possède un constructeur par défaut.

    Hope it helps.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 50
    Points : 60
    Points
    60
    Par défaut
    Difficile à dire en effet avec si peut d'info.

    Il pourrait d'agir d'une faute de frappe "vector<data>" alors que ta classe s'appelle "Data". Ton compilo ne reconnais pas le type.
    Utilises "vector<Data>" ou "vector<Data>&" en paramètre de ta fonction selon ce que tu veux faire.

  4. #4
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    +1

    Il me semble en effet que c'est une faute de frappe ->Data.
    Le C++ est sensible à la majusculité.
    Et passer un vector<> par copie n'est pas une bonne idée. Toujours par référence, éventuellement constante.

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/05/2009, 14h23
  2. Réponses: 6
    Dernier message: 24/07/2006, 15h22
  3. [JpGraph] Passage d'un tableau en paramètre dans une URL pour JPgraph
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/01/2006, 16h15
  4. Réponses: 7
    Dernier message: 18/05/2005, 15h09
  5. Réponses: 9
    Dernier message: 13/05/2005, 03h13

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