|
|
|
|
- Subtítulo de error
- Explicaciones
- Ejemplo 1
- Ejemplo 2
- Soluciones
Error: Redefinición de la sintaxis
Los métodos de la clase <derivada y de la clase <base no tienen el mismo prototipo.. El compilador no puede resolver la ambigüedad entre un método redefinido y un método multisintáctico. Este error se produce cuando se utilizan diferentes sintaxis para un método con el mismo nombre que se encuentra tanto en una clase base como en una clase derivada de la clase base.. De hecho, cuando un método encontrado en la clase base y en la clase derivada no tiene el mismo prototipo, el compilador no puede decidir: - si se trata de un error en el código existente.
- si el comportamiento esperado es una redefinición del método. La redefinición del método estaba disponible en las versiones anteriores.
- si el comportamiento esperado es una sintaxis adicional para el método (nueva característica en la versión 16).
Para un método redefinido, la manipulación de una instancia de la clase derivada siempre ejecuta los métodos de la clase derivada. Para un método que utiliza diferentes prototipos (multi-sintaxis), la ejecución utilizará la mejor sintaxis encontrada de acuerdo con los parámetros especificados.. La redefinición del método y el uso de un método multi-sintáctico se escriben de la misma manera en el editor de código. Para evitar esta ambigüedad, el compilador muestra este error para get un código más claro. Ejemplo 1 Se define una clase derivada. Esta clase también utiliza un método llamado "Method1" pero con un prototipo diferente: el tipo de parámetro es diferente. En este caso, se muestra el error de compilación. Ejemplo 2 Se define una clase derivada. Esta clase también utiliza un método llamado "Method2" pero con un prototipo diferente: El "Método 2" de la clase base no espera ningún parámetro y el "Método 2" de la clase derivada espera 2 parámetros. En este caso, se muestra el error de compilación. Pueden darse tres casos: - 1er caso: Es un error: los dos métodos deben tener el mismo prototipo.
Solución: Corregir los prototipos - 2º caso: La redefinición del método con un prototipo diferente se hizo a propósito.
Este modo de funcionamiento corresponde al modo de funcionamiento de la Default hasta la versión 15. - Solución 1: Añadir el atributo cuya extensión es <override> al método de la clase derivada.
PROCEDURE method([<Parameters>]) <override> - Solución 2: Renombrar el método de la clase derivada.
- 3er caso: El método de la clase derivada debe considerarse como una sintaxis adicional del método de la clase base (uso de la multisintaxis).
Solución: Añadir el atributo cuya extensión es <overload> al método de la clase derivada. Para obtener más información, consulte Gestionando el overload.
PROCEDURE method([<Parameters>]) <overload>
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|