フィルターのクリア

Lisning for a subclass property

4 ビュー (過去 30 日間)
Walid
Walid 2015 年 6 月 24 日
コメント済み: Walid 2015 年 6 月 25 日
I have a main class and a subclass and I would like to listen for the change in any of the subclass properties. In other term when the property in the subclass changes, I would like to trigger a function in the main class. I coded it this way but nothing is happening. thanks for your help.
mainclass =
classdef class_mainclass < handle
properties (SetAccess = private)
end
properties (SetObservable)
subclass;
end
events
end
methods
function obj = class_mainclass
obj.subclass = class_subclass;
addlistener(obj,'subclass','PreSet',...
@PushButton.do);
end
function do(src,evt)
display('did');
end
end % methods
end % classdef
and a subclass
classdef class_subclass < handle
properties (SetAccess = private)
end
properties (SetAccess = public)
A=1;
end
events
end
methods
function obj = class_subclass
end
function obj = addA(obj)
obj.A=obj.A+1;
end
end % methods
end % classdef
>> m = class_mainclass;
>> m.subclass.addA

採用された回答

Guillaume
Guillaume 2015 年 6 月 24 日
編集済み: Guillaume 2015 年 6 月 24 日
First, a matter of terminology. Your subclass is not a subclass at all. A subclass derives from the main class. In matlab OOP this implies the following definition:
classdef subclass < mainclass
Your subclass is just a standard class that happens to be a member of your main class. It would be very odd for a main class to instantiate a subclass (except through factory methods), anyway.
In any case, If you want to listen to the property changes of your member class, it is these properties you need to set observable and these properties you need to attach a listener. At present, the only thing you'll detect is if your subclass member is changed to a new instance. That is you'll detect this:
m.subclass = class_subclass; %assign a new class_subclass to the member property of m
  5 件のコメント
Guillaume
Guillaume 2015 年 6 月 25 日
編集済み: Guillaume 2015 年 6 月 25 日
Sorry, I made a typo. It should have read:
addlistener(obj.subclass, 'A', 'PreSet', @PushButton.do);
Walid
Walid 2015 年 6 月 25 日
Thanks

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeConstruct and Work with Object Arrays についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by