Ce qui suit est une version simplifiée de ce que j'essaie de faire, car je suis sûr que vous ne voulez pas parcourir un ensemble complet de structs et de prototypes fonctionnels pour un Système de particules.ANSI C: Affectation de tableaux et de pointeurs aux tableaux
float const materials[24][4][4] = {{{...}}};
typedef struct EmitterStruct { float *material[4][4]; } Emitter;
typedef struct ParticleStruct { float material[4][4]; } Particle;
Emitter *myEmitter;
Emitter * createEmitter(float *material[4][4])
{
Emitter * newEmitter;
newEmitter = (Emitter *)malloc(sizeof(Emitter));
newEmitter->material = materal; /* Returns "incompatable types in assignment" */
return newEmitter; /* I also tried newEmitter->material = &material */
}
int main(char *argv, int argc)
{
myEmitter = createEmitter(materials[0]);
}
En substance, comme le montre le commentaire, j'obtiens une erreur de compilation. J'ai essayé ceci de plusieurs façons, même en utilisant "float material [4] [4]" dans la structure Emitter et la signature de createEmitter. Cependant, puis plus tard lorsque je tente de copier des valeurs dans une particule pour modificaitons en utilisant:
for (i=0; i++; i<4)
{
for (j=0; j++; j<4)
{
particle->material[i][j] = emitter->material[i][j];
}
}
Je reçois une autre incompatibilité de type lors de la copie, même si tout est déclaré comme type float [4] [4]. Pour l'essentiel, je veux obtenir un tableau 4x4 sur un tableau de tableaux 4x4, en garder une trace dans la structure de l'émetteur, puis le copier dans la structure de la particule. Mais je veux seulement copier les valeurs une fois.
J'ai changé le tag de ansi-c en c, puisque c'est le nom commun dans stackoverflow. J'espère que cela ne vous dérange pas. changez-le si vous ne l'aimez pas :) –