Overloaded subsref function with varargout, nargout is incorrect

14 vues (au cours des 30 derniers jours)
LukeAC
LukeAC le 7 Juin 2016
Commenté : LukeAC le 7 Juin 2016
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

Réponse acceptée

LukeAC
LukeAC le 7 Juin 2016
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 commentaire
LukeAC
LukeAC le 7 Juin 2016
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))

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by