У меня есть модуль класса VBA, Foo
, у которого есть метод, который работает с другим экземпляром класса Foo
. Я хочу, чтобы этот метод мог просматривать закрытое состояние другого экземпляра, как в приведенной ниже функции CompareTo
.
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "Foo"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private SecretValue As Integer
Function CompareTo(ByVal You As Foo) As Integer
Return Me.SecretValue - You.SecretValue
End Function
К сожалению, вышеприведенное не работает, поскольку в области действия CompareTo
, приватное состояние You
недоступно.
В других (более) основных языках OO, с которыми я знаком (Java, C#, Kotlin, C ++ и др. * 1025). *.), закрытые члены класса доступны для всех экземпляров класса.
Вопросы:
- Во-первых, я делаю это неправильно и есть ли способ для
Me
чтобы увидеть приватное состояние You
? - Во-вторых, если нет пути, что могло бы оправдать этот странный выбор дизайна?