У меня есть класс с дескриптором, и я хочу скопировать его по значению и сохранить где-нибудь.Однако, если я что-то изменю в классе, это также изменит его копию.
Вот пример моего класса, который я хочу скопировать:
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 и сохраняем его в 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
Наконец, если я изменю значение 'data' в 'm«Я не хочу, чтобы он изменял значение в хранилище, однако, похоже, что MyClass хранится в« хранилище »по ссылке:
>> m.data=3;
>> a.store
ans =
MyClass handle
Properties:
data: 3
Methods, Events, Superclasses
>> a.store.data
ans =
3
Возможно ли скопировать класс« handle »?Или мне нужно изменить свой класс, чтобы сделать его по значению, чтобы это работало?