Function return by reference

  • Thread starter Thread starter R Avery
  • Start date Start date
R

R Avery

I have a class that contains a variant array. I have a public property
that allows access to the variant array. However, the public property
returns the variant array by value. How can I force a function to
return the variant array by reference?


private m_vntData as variant
 
Sub test()
Dim myARy
Dim i As Long

myARy = [{1,2,3}]
For i = LBound(myARy, 1) To UBound(myARy, 1)
Debug.Print myARy(i)
Next i

ByRefCall myARy

For i = LBound(myARy, 1) To UBound(myARy, 1)
Debug.Print myARy(i)
Next i

End Sub

Function ByRefCall(ByRef ary)
Dim i As Long

For i = LBound(ary, 1) To UBound(ary, 1)
ary(i) = ary(i) * 2
Next i

End Function

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
Sorry if i was not more clear. I wish the function to actually RETURN
the reference, not just set an argument that is passed in as reference.
I want to be able to do things like myClass.myData(1,2) = 3.14..... if
possible, that is. I don't want to have to declare a separate array,
set that array equal to the array in the class, and then set individual
items in the array.

Of course, if this is not possible, then I'll have to turn to solutions
like the one you presented.
 
in Bob's example, ary and myary are the same memory space - there is no
duplication. If the array was duplicated, then you would get

1 2 3 1 2 3

rather than

1 2 3 4 5 6
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top