Je me tournai vers C++ après une longue période en C#, PHP et d'autres choses et j'ai trouvé quelque chose d'étrange:C++ strcpy expression non-constante sous forme de tableau lié
temp.name = new char[strlen(name) + strlen(r.name) + 1];
cette compile
temp.name = (char *)malloc(sizeof(char[strlen(name)
+ strlen(r.name) + 1]));
cela ne (temp.name est un char *)
L'erreur du compilateur est
erreur C2540: expression non constante sous forme de tableau lié
Est-ce que quelqu'un sait ce que le problème pourrait être et comment il pourrait y remédier? Je vous remercie.
Si vous utilisez C++, oubliez les tableaux char et utilisez std :: string. –
Alors que le texte du programme semble identique, la sémantique est très différente. Il y a * des types de tableaux en C++ qui ont des tailles de zéro ou des valeurs d'exécution. Mais ces types de tableaux ne sont adressables que par new-type-id. Les spécificateurs de type pour les tableaux déclarés n'utilisent pas de nouveaux ID de type, ils ne sont donc pas en mesure de désigner ces types «fantaisie».Essayez d'écrire 'nouveau (char [strlen (nom)])' ou 'nouveau (char [0]);' et notez comment cela échouera aussi, avec un compilateur conforme: Parce que les parenthèses feront le compilateur former un 'type -id' au lieu d'un 'new-type-id'. Similaire, 'sizeof' s'attend à un' type-id'. –