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,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 this->s_image[0]->delay = 50;
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
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;
};
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
 
public value struct img
{
public:
	static array<t_pixel>	^img = gcnew array<t_pixel>(64);
	unsigned char^delay;
};
Du coup je ne sais plus quoi faire. Comment déclarer des types ou classes qui me permettrons de faire ce que je souhaite?
Merci

edit: Je travaille sous visual C++ 2008 dans un projet CLR avec les windows Forms.