[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 :
En C++ :
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...)
Ca s'utilise ensuite comme un tableau normal. Pour plus d'infos :
http://www.sgi.com/tech/stl/Vector.html
Bonne chance
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