Я пытаюсь создать два идентичных объекта в VB6 с помощью операторов присваивания; что-то вроде этого...
Dim myobj1 As Class1
Dim myobj2 As Class1
Set myobj1 = New Class1
myobj1.myval = 1
Set myobj2 = myobj1
Стало очевидным, что это не создает два объекта, а скорее две ссылки на один и тот же объект, что не то, что я хочу. Есть ли способ создать второй объект таким образом, или мне нужно скопировать объект по одному члену за раз...
Set myobj2 = new Class1
myobj2.mem1 = myobj1.mem1
...
?
Изменить 2 Скотт Уитлок обновил свой отличный ответ, и я включил его изменения в этот теперь действующий фрагмент кода.
Private Type MyMemento
Value1 As Integer
Value2 As String
End Type
Private Memento As MyMemento
Public Property Let myval(ByVal newval As Integer)
Memento.Value1 = newval
End Property
Public Property Get myval() As Integer
myval = Memento.Value1
End Property
Friend Property Let SetMemento(new_memento As MyMemento)
Memento = new_memento
End Property
Public Function Copy() As Class1
Dim Result As Class1
Set Result = New Class1
Result.SetMemento = Memento
Set Copy = Result
End Function
Затем выполняется назначение в коде таким образом...
Set mysecondobj = myfirstobj.Copy