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

 채택된 답변

Matt J
Matt J 2012년 10월 5일
편집: Matt J 2012년 10월 5일

0 개 추천

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

Ivan
Ivan 2012년 10월 5일
편집: Ivan 2012년 10월 5일
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 !!
Matt J
Matt J 2012년 10월 5일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Graphics Performance에 대해 자세히 알아보기

질문:

2012년 10월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by