开发者

How to pass objects to methods in other classes in VB6

I have created two classes as interface / implementation classes, and wish to pass a particular example of one class to a method in the other. The definitions are as follows...

Class BigInt...

Option Explicit
Public Sub dothing(ByRef passed_object As MyInt)
End Sub

and an implementation BigImplementation...

Option Explicit
Implements BigInt

Public Sub BigInt_dothing(ByRef passed_obj As MyInt)
Dim i As Integer
i = passed_开发者_如何学Pythonobj.getprop
End Sub

The class I am planning to pass is...

Option Explicit

Public Property Get getprop() As Integer
End Property

Public Property Let letprop(ByVal myval As Integer)
End Property

implemented as MyImplementation thus...

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

I am then driving this with the following snippet of code:-

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

When the execution reaches the line marked, I get run-time error 438 - Object doesn't support property or method. The call to the ordinary function mysub works perfectly. Does anyone know what I am doing wrong and what I need to do to fix this?


Use either

mybigobj.dothing myobj

or

Call mybigobj.dothing(myobj)

Putting extra parentheses around a reference evaluates its default property and passes it's value as actual argument.


mybigobj.dothing requires its parameter to be a MyInt

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

You're passing a MyImplementation

Set myobj = New MyImplementation

So possiblly something like (my vb is rusty)

mybigobj.dothing (myobj.myint_getprop())
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜