[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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    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
  2. PiX
     
    Merci pour cette réponse complète!! :) c'est sympa, merci beaucoup!
    0