|
|
|
|
- Intitulé de l'erreur
- Explications
- Exemple 1
- Exemple 2
- Solutions
Erreur : Redéfinition de syntaxe
Les méthodes '<méthode>' de la classe '<classe dérivée>' et de la classe de base '<classe de base>' n'ont pas le même prototype. Le compilateur ne peut pas résoudre l'ambiguïté entre une méthode redéfinie et une méthode multisyntaxe. Cette erreur est provoquée par l'utilisation de syntaxes différentes pour une méthode de même nom présente à la fois dans une classe de base et une classe dérivée de la classe de base. En effet, lorsqu'une méthode dans la classe de base et dans la classe dérivée n'a pas le même prototype, le compilateur ne peut pas décider : - s'il s'agit d'une erreur dans le code existant.
- si le comportement attendu est une redéfinition de la méthode. La redéfinition de méthode était disponible dans les versions précédentes.
- si le comportement attendu est une syntaxe supplémentaire pour la méthode (nouveauté 16).
Pour une méthode redéfinie, la manipulation d'une instance de la classe dérivée exécute toujours les méthodes de la classe dérivée. Pour une méthode utilisant différents prototypes (multisyntaxe), l'exécution utilisera la meilleure syntaxe trouvée en fonction des paramètres spécifiés. La redéfinition de méthode et l'utilisation d'une méthode multisyntaxe s'écrivent de la même manière sous l'éditeur de code. Pour lever cette ambiguïté, le compilateur affiche maintenant cette erreur, afin d'obtenir un code plus clair. Exemple 1 Une classe dérivée est définie. Cette classe utilise également une méthode de même nom "Méthode1" mais avec un prototype différent : le type du paramètre est différent. Dans ce cas, l'erreur de compilation est affichée. Exemple 2 Une classe dérivée est définie. Cette classe utilise également une méthode de même nom "Méthode2" mais avec un prototype différent : "Méthode2" de la classe de base n'attend aucun paramètre et "Méthode2" de la classe dérivée attend 2 paramètres. Dans ce cas, l'erreur de compilation est affichée. Trois cas différents peuvent se présenter : - 1er cas : C'est effectivement une erreur : les deux méthodes auraient dû avoir le même prototype.
Solution : Corriger les prototypes - 2ème cas : La redéfinition de la méthode avec un prototype différent est voulue.
Ce fonctionnement correspond au fonctionnement par défaut jusqu'à la version 15. - Solution 1 : Ajouter l'attribut d'extension <redéfinition> à la méthode de la classe dérivée.
PROCEDURE méthode([<Paramètres>]) <redéfinition> - Solution 2 : Renommer la méthode de la classe dérivée.
- 3ème cas : La méthode de la classe dérivée doit être vue comme une syntaxe supplémentaire de la méthode de la classe de base (utilisation du multisyntaxe)
Solution : Ajouter l'attribut d'extension <multisyntaxe> à la méthode de la classe dérivée. Pour plus de détails, consultez La gestion du multisyntaxe.
PROCEDURE méthode([<Paramètres>]) <multisyntaxe>
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|