我有一些属性为val
的类classdef SomeClass < handle
properties
val;
end
methods
function sz = size(this,varargin)
sz = builtin('size',this.val,varargin{:});
end;
end
end
据说它应该是重载此方法以获得类SomeClass的适当大小的正确方法,如果它被定义为矩阵,即。 val是一个矩阵。分配如
a = size(b) % b is SomeClass object
然而起作用
[a,b] = size(b)
没有。它导致错误&#34;输出参数太多。&#34;,虽然内置双精度方法大小(实际上是val)与此语法一起使用。
任何人都可以给我一个提示。在这种情况下有什么问题?
答案 0 :(得分:2)
如patrik的评论所述,使用varargout
...
通过添加nargout
,size方法可以实现如下:
function varargout = size(this,varargin)
[varargout{1:nargout}] = builtin('size',this.val,varargin{:});
end
作为旁注,由于val
可能有一个使用重载大小方法的类的角落情况,内置的使用可以替换为直接调用size
。
Obj = SomeClass();
Obj.val = Obj;
size(Obj);
会遇到无限循环......