Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem when I store a copy of an object in a new variable
Hi all
Having built an object of a user-defined class and stored it an element of a public array (all works fine), I now wish to copy that object to a new element and work on the copy. For example: Public StoreObjects(100) as NewClass1 Function CreateCopyClass(OldStoreNumber as integer, NewStoreNumber as integer) Set StoreObjects(NewStoreNumber)=StoreObjects(OldStore Number) CreateCopyClass=NewStoreNumber End Function The problem is that while the object seems to have been copied over to the NewStoreNumber, when later I look to manipulate that new object within the code it also changes the data in the original object. What am I doing wrong please? Thanks very much for your help Lloyd |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem when I store a copy of an object in a new variable
when you use the set command, you are setting a reference to the original
object. Then when you perform a change either using the oldstorenumber or newstorenumber, you are using the same instance of the class. You need to create a new instance of the class, copy the attributes between instances. And create a reference to this new instance. -- Regards, Tom Ogilvy "pinkfloydfan" wrote: Hi all Having built an object of a user-defined class and stored it an element of a public array (all works fine), I now wish to copy that object to a new element and work on the copy. For example: Public StoreObjects(100) as NewClass1 Function CreateCopyClass(OldStoreNumber as integer, NewStoreNumber as integer) Set StoreObjects(NewStoreNumber)=StoreObjects(OldStore Number) CreateCopyClass=NewStoreNumber End Function The problem is that while the object seems to have been copied over to the NewStoreNumber, when later I look to manipulate that new object within the code it also changes the data in the original object. What am I doing wrong please? Thanks very much for your help Lloyd |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem when I store a copy of an object in a new variable
So, I guess I have to set up the new variable/array element and copy
each property separately to it?? Isn't there any easier way to work with a copy of an object? |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem when I store a copy of an object in a new variable
You can give your class a .Clone method, so it makes a copy of itself.
You still have to write the code to populate each member of the new instance with the values in the old instance, but at least then it encapsulated in the class and any user of you class does not need to know how it is achieved. As Tom pointed out, Set will increase the reference count on that object by 1, not create a new object. NickHK "pinkfloydfan" wrote in message oups.com... So, I guess I have to set up the new variable/array element and copy each property separately to it?? Isn't there any easier way to work with a copy of an object? |
#5
Posted to microsoft.public.excel.programming
|
|||
|
|||
Problem when I store a copy of an object in a new variable
thanks a lot Nick, that's very clear as usual
|
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
store variable | Excel Programming | |||
store SHAPE-Object on disk | Excel Programming | |||
Error trap with object variable problem | Excel Programming | |||
Object variable problem | Excel Programming | |||
Problem Using an Object Variable in a Class Definition | Excel Programming |