Maison > développement back-end > C++ > Pourquoi une 'demande de membre '...' dans '...' qui n'est pas de type classe' se produit-elle lors de l'utilisation de classes C ?

Pourquoi une 'demande de membre '...' dans '...' qui n'est pas de type classe' se produit-elle lors de l'utilisation de classes C ?

Linda Hamilton
Libérer: 2024-11-30 20:19:11
original
829 Les gens l'ont consulté

Why Does

Comprendre l'erreur : "demande de membre '..." dans '..." qui est de type non-classe"

Lors de la tentative d'utilisation de classes et leurs fonctions membres, l'erreur "demande de membre '...' dans '...' qui est de type non-classe" se produit souvent. Pour comprendre sa cause, il est crucial d'analyser le code source qui l'a déclenché.

Dans l'exemple fourni, la classe Foo possède deux constructeurs : un qui n'accepte aucun argument et un autre qui accepte un argument entier. Lors de l'instanciation d'objets à l'aide du constructeur avec l'argument, l'exécution se déroule comme prévu. Cependant, l'utilisation du constructeur sans argument entraîne l'erreur susmentionnée.

Résolution du problème

L'erreur provient d'une syntaxe incorrecte. Pour y remédier, l'extrait de code suivant doit être utilisé :

Foo foo2();
Copier après la connexion

Remplacez le code ci-dessus par :

Foo foo2;
Copier après la connexion

Le compilateur interprète par erreur la syntaxe

Foo foo2()
Copier après la connexion

comme déclaration d'une fonction nommée 'foo2' avec le type de retour 'Foo'. Cependant, ce n'est pas la fonctionnalité prévue.

Éviter l'ambiguïté

Après avoir corrigé la syntaxe, une autre erreur possible peut apparaître, la lecture de "l'appel de 'Foo()' surchargé est ambigu." Cela se produit car le compilateur détecte plusieurs constructeurs surchargés pour Foo. Pour résoudre ce problème, spécifiez explicitement le constructeur à utiliser, comme indiqué ci-dessous :

Foo foo2 = Foo();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal