Я создал два класса как классы интерфейса / реализации и хочу передать конкретный пример одного класса методу в другом. Определения следующие ...
Класс BigInt ...
Option Explicit
Public Sub dothing(ByRef passed_object As MyInt)
End Sub
и реализация BigImplementation ...
Option Explicit
Implements BigInt
Public Sub BigInt_dothing(ByRef passed_obj As MyInt)
Dim i As Integer
i = passed_obj.getprop
End Sub
Класс, который я планирую пройти, это ...
Option Explicit
Public Property Get getprop() As Integer
End Property
Public Property Let letprop(ByVal myval As Integer)
End Property
реализован как MyImplementation таким образом ...
Option Explicit
Implements MyInt
Private myval As Integer
Public Property Get myint_getprop() As Integer
myint_getprop = myval
End Property
Public Property Let myint_letprop(ByVal passed_int As Integer)
myval = passed_int
End Property
Затем я веду это со следующим фрагментом кода: -
Private Sub Command_Click()
Dim myobj As MyInt
Set myobj = New MyImplementation
Dim mybigobj As BigInt
Set mybigobj = New BigImplementation
myobj.letprop = 1
Call mysub(myobj)
mybigobj.dothing (myobj) ' Line with problem
End Sub
Private Sub mysub(ByVal passed_obj As MyInt)
Dim i As Integer
i = passed_obj.getprop
End Sub
Когда выполнение достигает отмеченной строки, я получаю ошибку времени выполнения 438. Объект не поддерживает свойство или метод. При вызове обычной функции mysub работает отлично. Кто-нибудь знает, что я делаю неправильно и что мне нужно сделать, чтобы это исправить?