Как передать объекты в методы других классов в VB6 - PullRequest
1 голос
/ 11 февраля 2011

Я создал два класса как классы интерфейса / реализации и хочу передать конкретный пример одного класса методу в другом. Определения следующие ...

Класс 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 работает отлично. Кто-нибудь знает, что я делаю неправильно и что мне нужно сделать, чтобы это исправить?

Ответы [ 2 ]

6 голосов
/ 11 февраля 2011

Используйте либо

mybigobj.dothing myobj

или

Call mybigobj.dothing(myobj)

Помещение в скобки дополнительных скобок оценивает его свойство по умолчанию и передает его значение в качестве фактического аргумента.

0 голосов
/ 11 февраля 2011

mybigobj.dothing требует, чтобы его параметр был MyInt

Public Sub BigInt_dothing(ByRef passed_obj As MyInt)
Dim i As Integer
i = passed_obj.getprop
End Sub

Вы передаете MyImplementation

Set myobj = New MyImplementation

Так что возможно что-то вроде (мой VB ржавый)

mybigobj.dothing (myobj.myint_getprop())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...