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 :
Et je l'ajoute dans "fonctionsExternes.cpp" et sa déclaration (prototype ?) dans "fonctionsExternes.h" :
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; } */
fonctionsExternes.cpp :
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
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 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 #ifndef FONCTIONSEXTERNES_H_INCLUDED #define FONCTIONSEXTERNES_H_INCLUDED void chargementVecteur( double table[], int tailleTable, vector<double> & mon_score); #endif // FONCTIONSEXTERNES_H_INCLUDED
Je en comprends pas pourquoi.
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))
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
Partager