- For events -
How do I get a subclass to listen to an event generated in a superclass?
3 次查看(过去 30 天)
显示 更早的评论
I have a superclass, BasicPlot that generates an event 'DonePlotting' when the main plotting method is finished: notify(s, 'DonePlotting', event.EventData), where 's' is the object handle returned by the BasicPlot constructor.
A subclass FancyPlot < BasicPlot has a listener in its constructor that's supposed to be triggered by 'DonePlotting': s.hLsnr = addlistener(s, 'DonePlotting', 'PostSet', @(src, evt)fancyplot_event(s, src, evt));
However, when it gets to that line, Matlab reports, "The name 'DonePlotting' is not an accessible property for an instance of class 'FancyPlot'.
When I stop the program in the debugger just before the addlistener line and ask for 'events(s)', it lists 'DonePlotting'. Hum...
So, how do I get the subclass to listen to an event generated by the superclass?
0 个评论
回答(1 个)
Spruha
2025-6-16
Hi Etaoin,
The issue you're encountering is due to the incorrect usage of the 'PostSet' argument. You're trying to listen for an event, but you are using the syntax for a property listener.
This results in the following error:
"The name 'DonePlotting' is not an accessible property for an instance of class 'FancyPlot'."
This is because 'PostSet' is trying to find a property named ‘DonePlotting’. However, it is an event, not a property.
You can refer to the below code samples:
addlistener(obj, 'EventName', callback)
2. For properties -
addlistener(obj, 'PropertyName', 'PostSet', callback)
Hope this helps!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Events 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!