假设我有以下目录结构:
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个文件中进行了硬编码。那个,我和其他几个类有类似的结构......我宁愿把这一切都完好无损。
我希望找到一个补丁,但不能;我在俯瞰吗?有没有人遇到过这个?有人知道一个简单的解决方法吗?
答案 0 :(得分:1)
已报告为bug report number 1314646,存在于R2015b和R2016a中,并已在R2016b中修复。
我担心没有解决办法,除了不对包和类使用相同的名称。