假设我有以下目录结构:
Rootdir
└── +PkgClsName
└── @PkgClsName
└── PkgClsName.mPkgClsName.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个文件中被硬编码。我对其他几门课也有类似的构造.我宁愿把这些都完好无损。
我本来想找个地方做这个,但却找不到,难道我会忽略它吗?还有其他人遇到这个吗?有人知道一个简单的解决办法吗?
发布于 2018-01-03 16:10:58
它已经被报道为错误报告编号1314646,出现在R2015b和R2016a中,固定在R2016b中。
恐怕没有其他的解决办法,除了不为包和类使用相同的名称之外。
https://stackoverflow.com/questions/48078248
复制相似问题