- Код: Выделить всё
- 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
Но код при этом теряеи свою читабельность.
Это особенно заметно при большем уровне вложенности классов.
Кто-нибудь может подсказать способ решения данной проблемы?






 .
.