Handle to object method

Ok, so I have this object Object1. One of its properties is another object, Object2 : Object1.prop = Object2.
Now from within a method of Object1, I am creating GUI controls whose callbacks I want to be one of Object2's public methods, say Object2.publicMethod.
So in Object1 I have something of the form:
function callbackWillBeCreated(this)
guicontrol('Callback', @this.prop.publicMethod);
end
This doesn't work ! When the callback is called, Matlab sends an error saying it doesn't know the function.
Does anyone have a fix or an explanation as to why it doesn't work ?
Thanks

 Accepted Answer

Matt J
Matt J on 5 Oct 2012
Edited: Matt J on 5 Oct 2012
What you had would be fine if you have R2012a or later, which I guess you don't.
But for earlier MATLAB versions, it won't work because "this.prop.publicMethod" is not the name of a function. You will need to do something like this,
guicontrol('Callback', @() this.prop.publicMethod);
Or, if the callback takes arguments
guicontrol('Callback', @(x) this.prop.publicMethod(x));
and so on.

2 Comments

Ivan
Ivan on 5 Oct 2012
Edited: Ivan on 5 Oct 2012
This should work, yes. I'll try. But I do have 2012a. Will install 2012b and see if that's better.
Thanks for the quick reply !!
Before you upgrade, try this in R2012a:
function callbackWillBeCreated(this)
prop=this.prop;
guicontrol('Callback', @prop.publicMethod);
end
I think it's just a problem of how much nested indexing you can have.

Sign in to comment.

More Answers (0)

Categories

Find more on Graphics Performance in Help Center and File Exchange

Asked:

on 5 Oct 2012

Community Treasure Hunt

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

Start Hunting!