Maison > développement back-end > C++ > Pourquoi mon code C génère-t-il une « Erreur : demande de membre « fonction1 » dans « myObj », qui est de type non-classe « MyClass ()() » » ?

Pourquoi mon code C génère-t-il une « Erreur : demande de membre « fonction1 » dans « myObj », qui est de type non-classe « MyClass ()() » » ?

Mary-Kate Olsen
Libérer: 2024-11-12 12:12:02
original
377 Les gens l'ont consulté

Why Does My C   Code Throw an

Confusion résolue : Comprendre l'erreur "Constructeur sans arguments"

Votre rencontre avec le message d'erreur "erreur : demande de membre 'function1' dans 'myObj', qui est de type non-classe 'MyClass ()()'" tandis que compiler votre code C vous a peut-être laissé perplexe. Clarifions la confusion entourant cette erreur.

Le problème vient de la syntaxe ambiguë d'une déclaration de constructeur vide avec des parenthèses. Bien qu'il puisse sembler que la syntaxe suivante définit un objet sans argument :

MyClass myObj();
Copier après la connexion

La norme du langage dicte qu'une telle syntaxe est en fait interprétée comme une déclaration de fonction. Pour éviter cette ambiguïté, la syntaxe correcte pour déclarer un constructeur sans argument est :

MyClass myObj;
Copier après la connexion
Copier après la connexion

Cette syntaxe alternative désigne explicitement une définition d'objet, résolvant l'ambiguïté et permettant au compilateur d'accéder correctement à la fonction membre function1( ).

Il ne s'agit pas d'une limitation du compilateur mais plutôt d'un strict respect du standard du langage C. La norme précise clairement qu'une déclaration de fonction a toujours priorité sur une définition d'objet lorsque la syntaxe est ambiguë.

Par conséquent, pour éviter de telles erreurs, assurez-vous de toujours utiliser la syntaxe standard pour déclarer des constructeurs sans arguments :

MyClass myObj;
Copier après la connexion
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