Tableau 2 entrées problemme borland

Tableau 2 entrées problemme borland - C++ - Programmation

Marsh Posté le 14-05-2006 à 15:49:36    

Bonjour,
J'ai un petit problemme avec le compilateur il bute sur une étape de compilation.
Cette etape compile bien avec gcc sous linux mais ne fonctionne pas avec  
le compilateur de borland
Voici le code:
 
istringstream fluxString(repStats);
 
getline( fluxString,nbEnregistrement,';');
getline( fluxString,nbChamps,';');
 
 
QString nombreEnregistrement(nbEnregistrement);
QString strNbChamps(nbChamps);
 
int iNbChamps=1;
int iNbEnregistrement=1;
 
iNbChamps=strNbChamps.toInt();
iNbEnregistrement=nombreEnregistrement.toInt();
 
string enregistrement [iNbEnregistrement][iNbChamps];
 
 
C'est la derniere ligne qui pose problemme il m'affiche 2 fois cette erreur:
Expression Constante Nécessaires dans la fonction .............
 
Ou est le problème ?  
Merci
 
 
 


---------------
Développeur
Reply

Marsh Posté le 14-05-2006 à 15:49:36   

Reply

Marsh Posté le 14-05-2006 à 16:21:35    

iNbEnregistrement et iNbChamps ne sont pas des constantes. Donc quand tu declares le tableau il aime pô.

Reply

Marsh Posté le 14-05-2006 à 16:25:03    

Oue mais quand je fais ca:  
Remplacement de :

Code :
  1. string enregistrement [iNbEnregistrement][iNbChamps];


par :

Code :
  1. string enregistrement [][] = new string [iNbEnregistrement] [iNbChamps] ;


Quand je fais ca, le comiltateur me sort une autre erreur:
La taile du type 'string []' est inconue ou zero
Impossible de convertir 'string ( *)[1]' en 'string[][]'
 
et avec :

Code :
  1. string **enregistrement = new string [iNbEnregistrement] [iNbChamps] ;


le compilateur me dit:
Impossible de convertir 'string ( *)[1]' en 'string[][]'


---------------
Développeur
Reply

Marsh Posté le 14-05-2006 à 16:31:06    

et ca te dirait pas d'utiliser des vector ?

Reply

Marsh Posté le 14-05-2006 à 16:33:27    

Oué c'est ce que l'on ma conseillé sur un autre forum mais je connait pas trop.
Sinon quelqun ma donnée quelque chose qui compile et qui à l'air de marcher bien.
C'est en fait un tableau dynamqiue à double entrée mais alloué dimmension par dimension
 
Remplacement de :

Code :
  1. string enregistrement [iNbEnregistrement][iNbChamps];

Par:

Code :
  1. string **enregistrement=new string *[iNbChamps];
  2.         for(int i=0;i<iNbEnregistrement;i++)
  3.         {
  4.             enregistrement[i]=new string[iNbEnregistrement];
  5.         }


Message édité par ducseb le 14-05-2006 à 16:34:48

---------------
Développeur
Reply

Marsh Posté le 14-05-2006 à 16:34:56    

breizhbugs a écrit :

iNbEnregistrement et iNbChamps ne sont pas des constantes. Donc quand tu declares le tableau il aime pô.


 
constante et connue a la compilation

Reply

Marsh Posté le 14-05-2006 à 16:36:51    

Code :
  1. vector< vector<string> > enregistrement(iNbEnregistrement, vector<string>(iNbChamps);

Reply

Marsh Posté le 14-05-2006 à 16:38:44    

Sur un autre forum voici ce que l'on ma répondue:
 

Citation :


DE: Laurent G. de Developpez.com
La taille des tableaux statiques doit être connu à la compilation, c'est donc Borland qui a raison cette fois. Les VLA (Variable Length Array -- ce que tu utilises là sans le savoir) sont une extension du C99, c'est pourquoi GCC les tolère par défaut si tu n'as pas les bonnes options de compilation.
 
Pour un tableau dynamique, il faut regarder du côté de std::vector.


---------------
Développeur
Reply

Marsh Posté le 14-05-2006 à 16:40:47    

Avec le code du dessus de skelter est-ce  possible après d'utiliser  
une ligne de type:
 
enregistrement[2][1]="toto";  
 
Comme un tableau double entrée en faite ?  


---------------
Développeur
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed