Bonjour,
Cela fait maintenant plusieurs jours que je butte sur un problème. Je n'arrive pas a créer un nouveau type non static.
Je m'explique:
Je souhaite créer un type Image qui contient un champ Delay (UChar) et un champ pixels qui serait du type t_pixel (UChar r,v,b).
Avec le code suivant j'arrive sans problème a créer une image et a remplir les valeurs. Cependant je n'arrive pas a créer un tableau d'image. Accun problème a la compilation mais a l'execution de cette ligne,
J'ai le droit a une jolie execption System.NullReferenceException, car les elément ne semble pas crées. J'ai la confirmation avec le débugger qui me dit que les 2 élement de mon tableau sont non définis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part this->s_image[0]->delay = 50;
En ecrivant la classe img d'une autre manière j'arrive a définir et éditer mon tableau mais cependant Tous les éléments pixels de chaque images sont identiques.
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 public value struct t_pixel { public: unsigned char red; unsigned char green; unsigned char blue; }; public ref class img { public: array<t_pixel> ^pixels; unsigned char delay; public: img(void) { this->pixels = gcnew array<t_pixel>(64); }; }; public ref class TEST { public: TEST(void) { this->s_image = gcnew array<img^>(2); } void init(void) { this->s_img.delay=3; this->s_img.pixels[0].red=55; this->s_image[0]->delay = 50; this->s_image[1]->delay = 142; for(int i=0;i<4;i++) { this->s_image[0]->pixels[i].red=i*10; this->s_image[0]->pixels[i].green=i*10; this->s_image[0]->pixels[i].blue=i*10; } for(int i=0;i<4;i++) { this->s_image[1]->pixels[i].red=i*50; this->s_image[1]->pixels[i].green=i*50; this->s_image[1]->pixels[i].blue=i*50; } } private: array<img^> ^s_image; img s_img; };
Du coup je ne sais plus quoi faire. Comment déclarer des types ou classes qui me permettrons de faire ce que je souhaite?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public value struct img { public: static array<t_pixel> ^img = gcnew array<t_pixel>(64); unsigned char^delay; };
Merci
edit: Je travaille sous visual C++ 2008 dans un projet CLR avec les windows Forms.
Partager