2011-11-17 43 views
2

我有一个类是通过处理,我想通过值复制它并将其存储在某个地方。但是,如果我改变了课堂上的任何内容,它也会更改它的副本。复制Handle Class的类的方法?

这里是我想复制我的类的例子:

classdef MyClass < handle 
    properties 
     data; 
    end 
    methods 
     function M = MyClass() 
      M.data=5; 
     end 
    end  
end 

这是一个测试类测试修改:

classdef Test < handle 
    properties 
     store 
    end 
    methods 
     function N = Test(M) 
      N.store = M; 
     end 
    end 
end 

现在,我们创建MyClass的实例,并将其存储in Test:

>> m=MyClass 
m = 
    MyClass handle 
    Properties: 
    data: 5 
    Methods, Events, Superclasses 

>> a=Test(m) 
a = 
    Test handle 
    Properties: 
    store: [1x1 MyClass] 
    Methods, Events, Superclasses 

>> a.store 
ans = 
    MyClass handle 
    Properties: 
    data: 5 
    Methods, Events, Superclasses 

最后,如果我在'm'中更改'data'的值,我不希望它更改值i但是它看起来像MyClass被存储在'商店'引用:

>> m.data=3; 
>> a.store 
ans = 
    MyClass handle 
    Properties: 
    data: 3 
    Methods, Events, Superclasses 

>> a.store.data 
ans = 
    3 

是否有可能复制一个“句柄”类?或者我是否需要改变我的课程以使其发挥作用?

回答

相关问题