Question: "myself" in a Class

C

Charles

Hello

I am working with classes and I have a little question: how do you
create a pointer on the object in which the procedure sits?

More precisely, I have an object A, which has a procedure that allows
to create some Objects B. This procedure gets a pointer on object B
each time it creates one. It is therefore easy to have a list of
pointer to B stored in A.

Now I would like to create a link the other way round. I would like to
store in B a pointer to object A. Ideally that would be done when I
create B in the procedure. But for that, I need in the definition of
the procedure (which sits in object A) to use a pointer on A. Is there
a sort of "myself" instruction that I can use for that?

Not sure if this is clear. Thanks in advance

Best regards
Charles
 
B

Bob Phillips

I don't know is this is what you mean

Class1

Public test
Private mClass2 As Class2

Private Sub Class_Initialize()
test = "Testing initial class"
Set mClass2 = New Class2
mClass2.BackPointer = Me
mClass2.BackCall
End Sub

Class2

Private mBackClass As Object

Public Property Let BackPointer(ByRef Class As Object)
Set mBackClass = Class
End Property

Public Function BackCall()
MsgBox mBackClass.test
End Function


and test like so

Dim TestClass As Class1
Set TestClass = New Class1


--
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
C

Charles

It works perfectly. That's exactly what I was looking for. "Me".....

Many thanks!
Charles
 
V

Vergel Adriano

"Me" is the reference to the current instance of the class. Something like
this

----- ClassA ----------
Private mstrName As String

Public Property Get Name()
Name = mstrName
End Property

Public Sub test()
Dim objB As New ClassB

mstrName = "ClassA"
Set objB.Parent = Me
MsgBox objB.Parent.Name

End Sub

----- ClassB ----------
Private mParent As ClassA

Public Property Set Parent(obj As ClassA)
Set mParent = obj
End Property

Public Property Get Parent()
Set Parent = mParent
End Property


----- Module1 ----------
Sub test()
Dim objA As New ClassA
objA.test
End Sub
 

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

Top