Как использовать Property Let для массивов?

Я очень новичок в VBS, но я не в состоянии реализовать даже самые простые вещи, как кажется. Я хочу иметь класс, который содержит массив в частном члене. Поскольку я хочу «внедрить» массив, я попытался реализовать «метод установки», используя функциональность Let.

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

Этот класс используется следующим образом:

Dim allowed
allowed = Array("task1", "task2")
Dim phase
Set phase = New CPhase 
phase.AllowedTasks = allowed

Это приводит к «Ошибке выполнения Microsoft VBScript (...): несоответствие типов» в методе Let. Я также пытался использовать различные комбинации "ByVal", "ByRef", но поскольку не имел абсолютно никакого опыта работы с VBS, я не мог найти решения. Так что я делаю неправильно?

Любые подсказки или ссылки на полезные ресурсы очень ценятся! Спасибо!


person philonous    schedule 15.07.2011    source источник


Ответы (1)


Виновник

Private m_AllowedTasks()

что создает мерзость - фиксированный массив без размера. Просто удалите ().

Private m_AllowedTasks

для создания (пустого) Variant, который может быть set=let для полезного (с возможностью исправления) массива.

person Ekkehard.Horner    schedule 15.07.2011