[C++]

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

  1. Merci pour cette réponse complète!! :) c'est sympa, merci beaucoup!
    0
    1. Modérateur
      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