J'ai commencé à apprendre C ++ sur un livre il y a quelque temps et maintenant je suis coincé avec une partie du code du livre qui ne fonctionne pas sur mon API, qui est Visual Studio 2019. Le livre est à partir de 2000, donc cette Peut-être faire partie du problème, mais si c'est pourriez-vous dire à ma façon de le corriger?
Le problème est dans le code suivant. L'auteur du livre souhaite utiliser un tableau de charcuterie comme argument pour le constructeur et le fait avec un pointeur (char * pname). Cependant, Visual Studio souligne l'argument ("0. Dannyboy"). J'ai regardé autour des réponses, mais personne ne ressemble à la mienne. Il serait très apprécié si quelqu'un pouvait m'aider! P>
3 Réponses :
String Literyms sont de type Const Char [] Code> Quelle dégradation à
Const Char * Code>. Votre constructeur devrait prendre un
const char * code>:
sur cette ligne: Vous passez un littéral à chaîne, qui est de type Cependant, vous devez utiliser un char [12] code> au constructeur de
étudiant code>. P>
chartons * code> pour se lier à un tableau code> char code>, de sorte que votre constructeur doit ressembler à ceci: P >
Student(char const * pName) {
in c historiquement littéraux de chaîne comporte des types de matrices de caractères non constants. Et avant que les compilateurs C ++ 11 standard C ++ autorisés à utiliser des littéraux de chaîne en tant qu'arguments de paramètres de type Cependant, cependant, les littéraux de chaîne ont néanmoins des matrices de caractères non constants Vous ne pouvez pas les changer. p> en C ++ 11 Il a été décidé de ne pas permettre d'utiliser des littéraux de chaîne avec le type alors déclarez le constructeur comme p> en tout cas, il est meilleur car cette déclaration indique le lecteur de la classe que la chaîne transbordée ne sera pas modifiée dans le constructeur même si l'argument ne sera pas un littéral à chaîne. P> p> char * code> pour la compatibilité ascendante.
char * code> car dans C ++, ils ont des types de matrices de caractères constants. < / p>
Merci pour la grande explication! Je l'ai ajouté et tout fonctionne maintenant!
Utilisez le qualificatif Const dans la déclaration de paramètre Student (Cons-Char * pname) Literyms de chaîne en C ++ comportant des types de matrices de caractères constants.
Quel livre utilisez-vous? Cela ne fonctionnerait pas non plus en 2000. Puis-je recommander un Good C ++ Book ?
J'ai commencé à apprendre C ++ sur un livre i> - N'apprenez pas de plus de 20 livres de plus de 20 ans. Le livre a-t-il également recommandé d'utiliser
nouveau code> quand il n'est pas nécessaire? Comme ici:
étudiant * ps = nouvel élève ("E. Z. Rider"); Code>? Cela devrait être
étudiant ps ("E. Z. RIDER"); Code>