cs_Gabi
Messages postés55Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention20 décembre 2005
-
20 déc. 2005 à 05:24
cs_Gabi
Messages postés55Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention20 décembre 2005
-
20 déc. 2005 à 16:34
J'ai un problème avec les arrays de struct en argument (o rly ?). Quand j'en passe un, la valeur que cela donne dans la fonction n'est pas correcte (menant à une runtime error). Pour comprendre, je vous donne un exemple hypothétique :
Comme je dis, ça ne créé pas d'erreur de compilation, étant donné que le code en soi est correct. Le problème se trouve probablement au niveau des adresses et des espaces d'array, mais là c'est pas facile à voir. Quelqu'un aurait une idée ? Merci.
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 20 déc. 2005 à 16:17
La taille du tableau (on dit comme ca en francais), tu ne peux pas la connaitre, car on peut aussi bien passer un pointeur qu'un tableau à ta fonction, donc l'information taille du tableau, si elle existe, est perdue.
Tu peux passer un argument supplémentaire, spécifiant la taille du tableau
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 20 déc. 2005 à 11:51
C'est correct de déclarer un tableau de myStruct sans définir de taille
? C'est une question, car j'ai appris que ca l'était pour les tableaux
de caractères, mais dans ton cas, tu es sur que cette ligne est
correcte ? :
myStruct Struct1[] = {{1,2,3},{4,5,6},{7,8,9}};
Ensuite ,ton problème c'est quoi en fait ?
cout << sizeof(myStruct); => si ca, ca affiche 4 c'est normal...
myStruct est un pointeur... pas un élément de myStruct.
cs_Gabi
Messages postés55Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention20 décembre 2005 20 déc. 2005 à 15:56
Mon code est assez complexe, c'est un truc en direct3d, je vais essayer de mettre seulement ce qui est pertinent. Ne vous inquiétez pas s'il y a un paquet de truc étranges dans les fonctions, je fais des tests.
//Create the vertex buffer
c_App.GetDevice()->CreateVertexBuffer(sizeof(pVertex),D3DUSAGE_WRITEONLY,D3DFVF_VERTEX,D3DPOOL_MANAGED,&VertexBuffer,NULL);
//Filling the vertex buffers with data
VertexBuffer->Lock(0,sizeof(Data),(void**)&Data,0);
memcpy(Data,pVertex,sizeof(pVertex));
VertexBuffer->Unlock();
D3DXCreateTextureFromFileA(c_App.GetDevice(),TexturePath,&Texture1); //Load the texture from the set path
}
cs_Gabi
Messages postés55Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention20 décembre 2005 20 déc. 2005 à 16:00
J'ai oublié d'ajouter que dans la fonction, si je déclare l'array de struct D3DVERTEX (celui qui s'appelle Triangle) à l'intérieur de la fonction, tout fonctionne. Mais je suis incampable de "l'amener" de l'extérieur à travers un argument. Mêem sans remplir Vertex, et en utilisant seulement l'argument lui-même, pVertex, rien ne marche.
cs_Gabi
Messages postés55Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention20 décembre 2005 20 déc. 2005 à 16:06
J'ai déouvert autre chose. L'accès aux éléments de l'array en tant que tel est correct. Le problème se trouve vraiment au niveau de sizeof(). Comment pourrais-je trouevr la taille de l'array et non du pointeur ?