- Код: Выделить всё
Private mArr(24, 24) As Boolean
Public Property Get Arr(x As Byte, y As Byte) As Variant
Arr = mArr(x, y)
End Property
Public Property Let Arr(x As Byte, y As Byte, ByVal vNewValue As Variant)
Let mArr(x, y) = vNewValue
End Property
Причем, свойство Arr - Default Property
Тогда код,типа :
- Код: Выделить всё
Dim tmp As New ArrayClass
tmp(0, 0) = True
tmp(1, 1) = True
Debug.Print "tmp(0, 0) =" & tmp(0, 0)
Debug.Print "tmp(1, 1) =" & tmp(1, 1)
работает без проблем. Т.е. без проблем производится присвоение и чтение элементов массива посредством Default Property - Arr.
Если же мы включаем ArrayClass в качестве поля данных в другой класс, например(ContClass):
- Код: Выделить всё
Public mArrayClass As New ArrayClass
то попытка присвоения, типа:
- Код: Выделить всё
Dim tmp As New ContClass
tmp.mArrayClass(0, 0) = True
вызывает ошибку времени во время исполнения "Wrong number of arguments or invalid property assignment".
Хотя чтение происходит без проблем:
- Код: Выделить всё
debug.print "tmp.mArrayClass(0, 0)=" & tmp.mArrayClass(0, 0)
Проблема решается путем явного указания свойства:
- Код: Выделить всё
tmp.mArrayClass.Arr(0, 0) = True
Но код при этом теряеи свою читабельность.
Это особенно заметно при большем уровне вложенности классов.
Кто-нибудь может подсказать способ решения данной проблемы?