Comunidad Gambas-es

Versión completa: Parámetro opcional en el constructor.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola.

 Como indica el título, he creado un constructor de una nueva ventana que he creado,  recibe dos parámetros obligatorios y uno opcional.

GAMBAS
  1. Public Sub _new($nombre as String, $respuestas as Integer, Optional $modo as Boolean  = False)



Hasta aquí todo normal. Pero el problema viene cuando desde un evento del formulario principal hago esto:
GAMBAS
  1. Dim nuevaVentana as VentanaPregunta
  2.  
  3. nuevaVentana = New VentanaPregunta("hola", 30, True)



Esto me da error, ya que el tercer parámetro, que también es opcional me sale que es de tipo Control, y es algo que no acabo de entender. También he probado a poner dos comas seguidas, pero no funciona. Algo estoy haciendo mal, pero no se el que.
[Imagen: Kd76Hos.png]
Muchas gracias.

Edito: La solución es pasar en los parámetros el nombre de la variable donde se almacena
GAMBAS
  1. nuevaVentana = New VentanaPregunta("hola", 30, nuevaVentana, True)


Lo que no se es el porque de este comportamiento.
En el constructor siempre está implícito el parámetro del contenedor, que es obligatorio. Si no hay parámetros opcionales, no pasa nada porque el compilador lo añade por su cuenta al final de la lista de parámetros, pero si colocas un parámetro opcional, que debe ir al final, entonces no puede ser colocado automáticamente por lo que debes referenciarlo en el código como el último parámetro de los obligatorios. Esa es la razón.

Saludos
Muchas gracias por la explicación, ahora me queda claro.

Un saludo.