C ++ interdit le tableau de taille variable

Je suis en utilisant le code existant que quelqu'un d'autre a écrit, et je n'arrive pas à compiler (limité de l'expérience en C ici, mais je suis en train d'apprendre!).

utilities.cc

#include "utilities.h"
FILE *open_file(char *filename, const char*extension, const char *access)
{
  char string[MAX_STR_LEN];
  FILE *strm = NULL;

  if(filename[0]=='
#include "utilities.h"
FILE *open_file(char *filename, const char*extension, const char *access)
{
char string[MAX_STR_LEN];
FILE *strm = NULL;
if(filename[0]=='\0')
{
printf("\n INPUT FILENAME (%s) > ",access);
fgets(string,MAX_STR_LEN,stdin);
sscanf(string,"%s",filename);
printf(" FILE %s opened \n", filename);
}
int len=strlen(filename);
if( len + strlen(extension) >= MAX_STR_LEN)
{
printf("\n ERROR: String Length  of %s.%s Exceeds Maximum",
filename, extension);
return(NULL);
} 
//char *filename1 = new(char[len+strlen(extension)+1]);
const int filenameLength = len+strlen(extension)+1;
char *filename1 = new(char[filenameLength]);
strcpy(filename1,filename); //temp filename for appending extension
/* check if file name has .extension    */
/* if it does not, add .extension to it */
int i=len-1;
while(i > 0 && filename[i--] != '.');
//  printf("\n Comparing %s to %s", extension, filename+i+1);
if(strcmp(extension, filename+i+1)  )
strcat(filename1,extension);
if( (strm = fopen(filename1, access) ) == NULL )
{
printf("\n ERROR OPENING FILE %s (mode %s)", filename1,access);
}
delete(filename1);
return(strm);
}
'
) { printf("\n INPUT FILENAME (%s) > ",access); fgets(string,MAX_STR_LEN,stdin); sscanf(string,"%s",filename); printf(" FILE %s opened \n", filename); } int len=strlen(filename); if( len + strlen(extension) >= MAX_STR_LEN) { printf("\n ERROR: String Length of %s.%s Exceeds Maximum", filename, extension); return(NULL); } //char *filename1 = new(char[len+strlen(extension)+1]); const int filenameLength = len+strlen(extension)+1; char *filename1 = new(char[filenameLength]); strcpy(filename1,filename); //temp filename for appending extension /* check if file name has .extension */ /* if it does not, add .extension to it */ int i=len-1; while(i > 0 && filename[i--] != '.'); // printf("\n Comparing %s to %s", extension, filename+i+1); if(strcmp(extension, filename+i+1) ) strcat(filename1,extension); if( (strm = fopen(filename1, access) ) == NULL ) { printf("\n ERROR OPENING FILE %s (mode %s)", filename1,access); } delete(filename1); return(strm); }

Voici l'erreur.

Compiling utilities.cc ...
src/utilities.cc: In function FILE* open_file(char*, const char*, const char*)’:
src/utilities.cc:251: error: ISO C++ forbids variable-size array
gmake: *** [/home/landon/geant4/work/tmp/Linux-g++/exampleN01/utilities.o] Error 1

L'erreur sur la ligne 251 se réfère à

char *filename1 = new(char[filenameLength]);

Si vous avez besoin d'informations supplémentaires laissez-moi savoir s'il vous plaît.

source d'informationauteur user1509364 | 2012-07-07