Envoyé par
manowar
J'ai une petite question au sujet de l'allocation de memoire avec new. Je voulais simplement allouer un tableau de pointeurs sur char...
J'ai donc ecris ca:
char **tab = new (char *)[10]; // par exemple et pourtant ca ne marche pas
Ce que tu as écrit est interprété commece qui a mon avis n'est pas valide (même si como l'accepte comme étant de type char*) car l'indexation doit se faire sur des expressions postfixées et qu'un new est une expression unaire.
Note qu'en général, si on veut utiliser des types un peut complexe avec new, il faut mieux les mettre complètement entre parenthèses parce que les règles de précédences après un new ont des effets parfois très bizarres. Donc ce serait:
char **tab = new((char*)[10]);
s'il n'y avait la seconde raison.
(char*)[10] n'est en effet pas un type, tu ne pourrais pas non plus t'en servir pour déclarer le paramètre d'une fonction.
en effet la syntaxe est
char **tab = new char *[10];
Tu peux aussi faire
1 2
| char**tab = new (char*[10]);
char** tab = new (char *([10])); |
si tu veux mettre des parenthèses.
PS: Je suis d'accord avec Loic au sujet de vector<string>.
Partager