Néophyte : passage de vecteur en fonction externe
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:
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:
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:
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:
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:
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