考虑以下目录结构,C:\magic
是当前的MATLAB文件夹:
C:\magic
C:\magic\+wand
C:\magic\+hat
现在,wand
和hat
是MATLAB包,可以由import wand.*
和import hat.*
加载。
考虑到我可能想在+hat
文件夹中为帽子创建一个抽象类:
% C:\magic\+hat\Hat.m
classdef Hat < handle
% class implementation ...
end
和一些儿童班:
% C:\magic\+hat\TopHat.m
classdef (Sealed) TopHat < Hat
% class implementation
methods
function this = TopHat()
this = this@Hat();
end
end
end
但是当我这样做时:
> import hat.*
> ha = TopHat()
我收到以下错误:
Error using hat.TopHat
The specified superclass 'Hat' contains a parse error or cannot be found
on MATLAB's search path, possibly shadowed by another file with the same name.
尽管如此,我可以毫无错误地ha = Hat()
。
可能发生什么,这个问题的最佳解决方案是什么?
提前致谢!
答案 0 :(得分:3)
尝试
classdef (Sealed) TopHat < hat.Hat
在MATLAB中没有“search-current-package-first” - 例程(抱歉这个坏名字:&gt;)。因此,要引用包中的类,您始终必须携带包名称 - 即使是在自己的classdef中引用类的静态方法。