R2016a:打包时错误构造类&班级名称相等

时间:2018-01-03 13:20:41

标签: matlab oop

假设我有以下目录结构:

Rootdir
└── +PkgClsName
    └── @PkgClsName
        └── PkgClsName.m

PkgClsName.m包含以下内容:

classdef PkgClsName < handle

    methods

        % Constructor
        function obj = PkgClsName()            
        end

        % Deep-copy handle object
        function new_obj = copy(obj)             
            new_obj = PkgClsName.PkgClsName();                            
        end

    end

end

然后,在R2016a中,发生以下情况:

>> T = PkgClsName.PkgClsName;
>> T.copy()

One or more output arguments not assigned during call to "_mcos_superclass_implicit_construct".

Error in PkgClsName.PkgClsName

Error in PkgClsName.PkgClsName/copy (line 11)
            new_obj = PkgClsName.PkgClsName();

这在R2010a,R2014a和R2017a中发生,指向R2016a中的(又一个)错误......

问题是因为包和类名相同;更改命名方案使它们不同,解决了问题。但是,由于必须在使用该类的所有函数/类中使用显式包名称和类名,因此这些名称现在至少在600个文件中进行了硬编码。那个,我和其他几个类有类似的结构......我宁愿把这一切都完好无损。

我希望找到一个补丁,但不能;我在俯瞰吗?有没有人遇到过这个?有人知道一个简单的解决方法吗?

1 个答案:

答案 0 :(得分:1)

已报告为bug report number 1314646,存在于R2015b和R2016a中,并已在R2016b中修复。

我担心没有解决办法,除了不对包和类使用相同的名称。