PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE

Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • Subtítulo de error
  • Explicaciones
  • Ejemplo 1
  • Ejemplo 2
  • Soluciones
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Error: Redefinición de la sintaxis
Subtítulo de error
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.
Explicaciones
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 obtener 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.
Soluciones
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 por defecto hasta la versión 15.
    • Solución 1: Añada el atributo cuya extensión es <suprimir> 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ñada el atributo cuya extensión es <sobrecarga> al método de la clase derivada.
    Ver Gestión de la sobrecarga para más detalles.
    PROCEDURE method([<Parameters>]) <overload>
Versión mínima requerida
  • Versión 16
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario