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.
L'erreur provient d'une syntaxe incorrecte. Pour y remédier, l'extrait de code suivant doit être utilisé :
Foo foo2();
Remplacez le code ci-dessus par :
Foo foo2;
Le compilateur interprète par erreur la syntaxe
Foo foo2()
comme déclaration d'une fonction nommée 'foo2' avec le type de retour 'Foo'. Cependant, ce n'est pas la fonctionnalité prévue.
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();
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!