Problème de gcnew avec des tableaux
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:
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:
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:
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.