bonjour,
je rencontre actuellement un problème qui me laisse dubitatif. tellement dubitatif que je suis persuadé que la solution est devant mes yeux, maisje n'arrive pasà la voir.
voilà j'ai trois fichiers sources dans mon programme :
- main.cpp
- ombrage.cpp
- global.cpp
je remplis deux vectors dans le fichier ombrage : le vector "direct" et le vector "diffus". je vérifie qu'ils sont bien remplis dans le main: pas de pb. leur taille est bonne également.
par contre dans global.cpp, il me met qu'ils sont nuls (taille égale à zero). c'est ça que je ne comprends pas.
voilà mon main :
voilà mon global.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
20
21
22
23
24
25
26
27
28
29 #include <string> #include <vector> #include <sstream> #include <iostream> #include <fstream> #include "cmath" #include "coordonnees.h" #include "ombrage.h" #include "global.h" using namespace std; vector< int> direct1 = get_direct(); vector< int> diffus1 = get_diffus(); vector< int> IntersectMap = get_global(); int main() { cout << direct1.size() << ' ' ; return 0; }
donc direct1.size() vaut bien la bonne valeur , soit 2700
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 #include <vector> #include <sstream> #include <iostream> #include <fstream> #include "cmath" #include "coordonnees.h" #include "ombrage.h" #include "global.h" using namespace std; vector< int> direct2 = get_direct(); vector< int> diffus = get_diffus(); void init_global(vector< int > &lightcolor) { int s; s = direct2.size(); lightcolor.resize(s); int index =0; lightcolor = diffus; cout << direct2.size() << ' '; } const std::vector<int>& get_global(void) { static bool is_already_init(false); static std::vector<int> V; if ( !is_already_init ) { init_global(V); is_already_init = true; } return V; }
tandis que direct2.size() vaut 0.
je pense que je passe à côté de qque chose d'évident, là, c'est pas possible autrement
merci pour votre aide!
Partager