[C++]

Pixcoder -  
 PiX -
Bonjour,

quand j'essaie de créer un tableau en C++ à partir d'une variable entière, le compilateur (Visual C++, je viens de changer) me sort une erreur :

Voici le code :


float carre_longueur [mesh[indice_mesh].nb_points] [mesh[indice_mesh].nb_points];




Voici les erreurs :

c:\Documents and Settings\Pix\Bureau\Shaders\Visual_Shaders\Moteur3D\objet3d.cpp(717) : error C2057: expression de constante attendue
c:\Documents and Settings\Pix\Bureau\Shaders\Visual_Shaders\Moteur3D\objet3d.cpp(717) : error C2466: impossible d'allouer un tableau de taille constante 0
c:\Documents and Settings\Pix\Bureau\Shaders\Visual_Shaders\Moteur3D\objet3d.cpp(717) : error C2057: expression de constante attendue
c:\Documents and Settings\Pix\Bureau\Shaders\Visual_Shaders\Moteur3D\objet3d.cpp(717) : error C2466: impossible d'allouer un tableau de taille constante 0
c:\Documents and Settings\Pix\Bureau\Shaders\Visual_Shaders\Moteur3D\objet3d.cpp(717) : error C2087: 'carre_longueur' : indice manquant
c:\Documents and Settings\Pix\Bureau\Shaders\Visual_Shaders\Moteur3D\objet3d.cpp(717) : error C2133: 'carre_longueur' : taille inconnue






Je comprends bien qu'il faut mettre une constante entière lors de la déf du tableau, mais on ne peut vraiment pas faire ca autrement?? J'aimerais avoir mesh[indice_mesh].nb_points² emplacements dans le tableau...


Merci de m'aider!! :)

PiX

2 réponses

mamiemando Messages postés 33778 Date d'inscription   Statut Modérateur Dernière intervention   7 884
 
Dans l'opérateur [] tu ne peux mettre qu'une valeur constante, ie un nombre en toute lettre, par exemple :
float tab[28][69];

Pour allouer un tableau comme tu veux le faire, il faut le faire dynamiquement. En C :
#include <stdlib.h>

int main(){
   unsigned int n=5;
   float *tab=(float *)malloc(n*sizeof(float));
   //....
   free(tab);
   return 0;
}

En C++ :
int main(){
   unsigned int n=5;
   float *tab=new float(5);
   //....
   delete tab;
   return 0;
}

Mais il y a mieux ! Tu peux utiliser les vectors de la STL qui apportent plein de méthodes sur les tableaux (recherche du min, ajout en queue de tableau etc...)
#include <vector>

int main(){
   unsigned int n=5;
   std::vector<float> tab(n);
   //....
   return 0;
}

Ca s'utilise ensuite comme un tableau normal. Pour plus d'infos :
http://www.sgi.com/tech/stl/Vector.html

Bonne chance
1
PiX
 
Merci pour cette réponse complète!! :) c'est sympa, merci beaucoup!
0