I am very new to VBS, but I am not able to implement even the simplest things, as it seems. I want to have a class which holds an array in a private member. Since I want to “inject” the array I tried to implement a “setter-method” using the Let functionality.
Class CPhase
Private m_AllowedTasks()
Public Property Let AllowedTasks(p_AllowedTasks)
m_AllowedTasks = p_AllowedTasks
End Property
Private Sub Class_Initialize()
ReDim m_AllowedTasks(0)
End Sub
End Class
This class is used as follows:
Dim allowed
allowed = Array("task1", "task2")
Dim phase
Set phase = New CPhase
phase.AllowedTasks = allowed
This results in a “Microsoft VBScript runtime error (…) : Type mismatch” in the Let-method. I also tried using different combinations of “ByVal”, “ByRef”, but since having absolutely no experience with VBS I couldn’t find a solution. So what am I doing wrong?
Any hints or links to helpful ressources are very appreciated!
Thanks!
The culprit is
which creates an abomination – a fixed array of no size. Just remove the ().
to create an (empty) Variant that may be set=let to an useful (redim-able) array.