passing handle objects by value
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
mahdi Babayi semiromi
il 13 Lug 2021
Commentato: Yongjian Feng
il 13 Lug 2021
Hi
I have a class inheriting from the "handle" class, which means (correct me if I'm wrong) it will have reference semantics. I use an instance of the class in a simulation loop and I'd like to save a sanpshot of the object in every iteration. Is there a way to dereference the handle object and pass it by value to store it in a cell array?
Thanks for your replies in advance
0 Commenti
Risposta accettata
Più risposte (1)
Yongjian Feng
il 13 Lug 2021
You don't need to.
classdef aclass < handle
properties
a
end
end
l={}
a = aclass();
a.a = 10;
l{end+1} = a;
a = aclass();
a.a = 20;
l{end+1} = a;
l{1}
l{2}
2 Commenti
mahdi Babayi semiromi
il 13 Lug 2021
Modificato: mahdi Babayi semiromi
il 13 Lug 2021
Yongjian Feng
il 13 Lug 2021
Can you just move the initialization line inside the for loop?
classdef aClass < handle
properties
a
end
end
l = {};
for i = 1:2
aClassInstance = aClass;
aClassInstance.a = i;
% here I want to save the variable aClassInstance by value, so that I
% have it in its current state. If I just assign it to a cell array,
% like:
l{end+1} = aClassInstance;
% then l{end+1} will only hold a pointer to the variable aClassInstance
% and when I exit the loop, I'll only have access to the latest state
% of the variable
end
Vedere anche
Categorie
Scopri di più su Startup and Shutdown in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!