Bonjour,
on m'a demandé récemment de faire une petite application de tests sous Visual Studio.NET 2003 en C++. Jusqu'à présent je n'y travaillais qu'en C# (et sous Borland c++ Builder ou gcc en C++).
Donc j'ai créé une nouvelle solution "Projets Visual C++" => "Application Windows Form (.NET)".
Dans cette application, je veux juste faire quelques traitements sur des buffers (membres de la classe Form1) en utilisant des pointeurs (déclarés en local dans mes méthodes) pour naviguer dans ces buffers.
Dès le début, j'ai butté sur la déclaration dans la classe de mes buffers. J'ai contourné le problème en les déclarant dans mes méthodes : c'est pas propre mais c'était pas important dans l'instant.
Oui mais voilà, les traitements dans mes méthodes se complexifiant, le nombre de buffers augmente et j'ai donc une jolie exception StackOverFlow à l'exécution.
Donc je déclare le buffer dans la classe :
Mais ensuite je ne parviens pas, dans ma méthode, à initialiser un pointeur sur ce buffer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part unsigned char buffer __nogc[256];
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unsigned char * ptrBuffer = &buffer[0]; =>error C2440: 'initialisation' : impossible de convertir de 'unsigned char __gc *' en 'unsigned char *'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unsigned char * ptrBuffer = (unsigned char * )&buffer[0]; =>error C2440: 'cast de type' : impossible de convertir de 'unsigned char __gc *' en 'unsigned char *'...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unsigned char __nogc * ptrBuffer = (unsigned char __nogc *)buffer; =>error C2440: 'cast de type' : impossible de convertir de 'unsigned char [256]' en 'unsigned char *'
Bref, après de nombreuses combinaisons (c'est triste d'essayer de résoudre un problème de compilation de cette façon) , je ne parviens pas à trouver l'utilisation correcte. Je sais que mon problème est lié à l'utilisation des extensions managées (l'option de compilation /clr) mais j'arrive pas à exploiter l'info.
Donc avis aux experts (dont je ne fais hélas pas parti).
Merci.
Flo.
Partager