2

考虑以下目录结构,即C:\magic当前的 MATLAB 文件夹:

C:\magic
C:\magic\+wand
C:\magic\+hat

现在,wandhat是可以由import wand.*和加载的 MATLAB 包import hat.*

考虑一下我可能想在+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()没有错误。

可能发生什么,这个问题的最佳解决方案是什么?

提前致谢!

4

1 回答 1

3

尝试

classdef (Sealed) TopHat < hat.Hat

MATLAB 中没有“search-current-package-first”例程(对不起,名字不好 :>)。所以要在包中引用一个类,你总是必须携带包名——甚至例如在它自己的classdef中引用一个类的静态方法。

于 2013-09-18T20:05:39.633 回答