[C++]
Pixcoder
-
PiX -
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
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
-
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 -