Bonjour à tous,

Je suis absolument néophyte, mais j'essaie de comprendre et d'apprendre...

Dans la progression de ce que je fais je voudrais utiliser un vecteur (vector) dans une fonction.

Si je passe le vecteur dans une fonction "interne" je en rencontre aucune difficulté :

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
#include <iostream>
#include <string>
#include "fonctionsExternes.h"
 
#include <vector> //Ne pas oublier !
 
 
using namespace std;
 
 
 
void chargementVecteur( double table[], int tailleTable, vector<double> & mon_score)
{
    for (int i=0 ; i < tailleTable ; ++i)
    {
        mon_score.push_back(table[i]+1);
        cout << "vecteur[" << i << "] = " << mon_score[i] << endl;
        cout << "taille du vecteur = " << mon_score.size() << " capacite du vecteur = " << mon_score.capacity() << endl;
 
    }
    return;
}
 
void moyenneVecteur(vector<double> & mon_score)
{
    float moyenneV(0);
        for (unsigned int j(0); j<mon_score.size(); ++j)
        {
            cout << "score" << j <<" : " << mon_score[j] << endl;
            moyenneV = moyenneV + mon_score[j];
            cout << "moyenneV = " << moyenneV << endl;
        }
 
        cout << "taille du vecteur : " << mon_score.size() << endl;
        cout << "somme actuelle : " << moyenneV << endl;
 
        moyenneV /= mon_score.size();
 
        // cout << "Dont la moyenne est : " << moyenneV << endl;
 
        cout << "Calcul de la moyenne a la sauce vector..." << endl;
        cout << "moyenne calculee par vecteur : " << moyenneV << endl;
}
 
 
 
 
int main()
 
{
 
 
// Calcul de la moyenne à la sauce vector dans main...
 
    // définition de mon vecteur
    int i=0;
    vector<double> score;
 
    // Declaration du tableau
    int const tailleTableau(6);
    double tableau[tailleTableau];
 
    tableau[0] = 15.2;
    tableau[1] = 10.8;
    tableau[2] = 6.7;
    tableau[3] = 11.3;
    tableau[4] = 8.9;
    tableau[5] = 13.7;
 
 
    // Passage de fonction
    // on va passer tableau[], tailleTableau et score
 
    chargementVecteur( tableau, tailleTableau, score);
 
    //double moyenneV(0);
 
    moyenneVecteur(score);
 
    return 0;
}

Maintenant si je veux passer ma fonction dans un fichier externe "fonctionsExternes.cpp" et "fonctionsExternes.h"

Dans main.cpp je commente la fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
/*
void chargementVecteur( double table[], int tailleTable, vector<double> & mon_score)
{
    for (int i=0 ; i < tailleTable ; ++i)
    {
        mon_score.push_back(table[i]+1);
        cout << "vecteur[" << i << "] = " << mon_score[i] << endl;
        cout << "taille du vecteur = " << mon_score.size() << " capacite du vecteur = " << mon_score.capacity() << endl;
 
    }
    return;
}
*/
Et je l'ajoute dans "fonctionsExternes.cpp" et sa déclaration (prototype ?) dans "fonctionsExternes.h" :

fonctionsExternes.cpp :

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
 
#include <iostream>
#include <string>
#include <vector>
#include "fonctionsExternes.h"
 
using namespace std;
 
void chargementVecteur( double table[], int tailleTable , vector<double> & mon_score)
{
    for (int i=0 ; i < tailleTable ; ++i)
    {
        mon_score.push_back(table[i]+1);
        cout << "vecteur[" << i << "] = " << mon_score[i] << endl;
        cout << "taille du vecteur = " << mon_score.size() << " capacite du vecteur = " << mon_score.capacity() << endl;
 
    }
    return;
}
Et le déclare dans fonctionsExternes.h :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
#ifndef FONCTIONSEXTERNES_H_INCLUDED
#define FONCTIONSEXTERNES_H_INCLUDED
 
 
void chargementVecteur( double table[], int tailleTable, vector<double> & mon_score);
 
#endif // FONCTIONSEXTERNES_H_INCLUDED
Et alors en compilation j'ai les messages suivants ...

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
-------------- Build: Debug in Test (compiler: GNU GCC Compiler)---------------
 
mingw32-g++.exe -Wall -fexceptions -g  -c "D:\Test\Test\fonctionsExternes.cpp" -o obj\Debug\fonctionsExternes.o
In file included from D:\Test\Test\fonctionsExternes.cpp:4:0:
D:\Test\Test\fonctionsExternes.h:5:58: error: 'vector' has not been declared
D:\Test\Test\fonctionsExternes.h:5:64: error: expected ',' or '...' before '<' token
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
Je en comprends pas pourquoi.
J'ai essayé avec des passages de référence, des écritures diiférentes...

Je ne trouve pas dans les forums d'explication.

Merci d'avance pour votre aide ..

Philippe