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:
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 2700Code:
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!