Maison > Article > développement back-end > Pourquoi mon code C génère-t-il une « Erreur : demande de membre « fonction1 » dans « myObj », qui est de type non-classe « MyClass ()() » » ?
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();
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;
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;
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!