Maison > Article > développement back-end > Pourquoi ne puis-je pas utiliser de parenthèses dans ma déclaration de constructeur sans arguments ?
Une erreur d'analyse perplexe : résoudre l'énigme des parenthèses dans les arguments du constructeur
Lorsque vous rencontrez le message d'erreur énigmatique "demande de membre 'fonction1' dans 'myObj', qui est de type non-classe 'MyClass ()()'" en essayant de compiler un programme C, les développeurs peuvent se retrouver à réfléchir aux raisons de cette erreur d'analyse déroutante. Le code source en question contient une classe avec un constructeur dépourvu d'arguments, déclaré à l'aide de la ligne suivante :
MyClass myObj();
Lors de l'exécution du processus de compilation, l'erreur susmentionnée apparaît, indiquant que la fonction membre 'function1' ne peut pas être accessible via l'objet 'myObj' car 'myObj' est perçu comme un type non-classe. Pour résoudre ce problème, le code est modifié comme suit :
MyClass myObj;
Cela soulève la question de savoir si l'absence d'arguments dans une déclaration de constructeur nécessite l'omission des parenthèses. Alors que des déclarations de constructeur vides utilisant des parenthèses ont déjà été utilisées en C , le standard du langage a adopté une position décisive : les ambiguïtés comme celle du code fourni sont systématiquement résolues en faveur des déclarations de fonction.
Il est crucial de noter que les initialiseurs de parenthèses vides sont autorisés dans certains scénarios, comme dans de nouvelles expressions ou lors de la construction d'un objet temporaire initialisé par une valeur. Cependant, dans le cas de déclarations de constructeur sans arguments, la norme impose catégoriquement l'omission des parenthèses. Cela garantit la clarté et évite les confusions potentielles pouvant résulter d'ambiguïtés syntaxiques.
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!