Overloaded subsref function with varargout, nargout is incorrect

14 次查看(过去 30 天)
I have created an overloaded subsref function for a class definition I've created to emulate the table datatype in R2011b. The function works robustly in R2015b, but when I use it in R2011b the value returned for nargout is wrong.
For example, with 0-1 output arguments, nargout returns numel(obj). With >=2 output arguments, the value returned for nargout is correct.
I created a simple function in R2011b which uses varargout to test, but it showed no such problem.
I have also created an overloaded numel function within the same class definition file. All of the methods are defined within the same script. Would this cause a conflict in R2011b to call the wrong numel function when calling nargout?
Thanks for any tips, -Luke

采纳的回答

LukeAC
LukeAC 2016-6-7
I've checked and confirmed the interference of the overloaded numel function. Commenting it out of the class definition eliminates the error. I opened the numel documentation and found the warnings with regard to creating an overloaded numel function and the subsequent effect on the subsref and subsasgn functions. I will continue investigating, as I need the overloaded numel function. -Luke
  1 个评论
LukeAC
LukeAC 2016-6-7
Attempted using dbstack to identify caller function to create an exception for numel call from the class definition file, but with no success. I'm going to remove the overloaded numel function and replace anywhere it is called in other scripts with prod(size(obj))

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Special Characters 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by