gpt4 book ai didi

matlab - R2016a : error constructing class when package & class name are equal

转载 作者:行者123 更新时间:2023-12-04 04:12:14 24 4
gpt4 key购买 nike

假设我有以下目录结构:

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 个文件中。那,我对其他几个类(class)也有类似的结构……我宁愿保持原样。

我希望为此找到一个补丁,但找不到;我忽略了吗?还有其他人遇到过这个吗?有人知道一个简单的修复方法吗?

最佳答案

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

恐怕没有解决方法,除了不要对包和类使用相同的名称。

关于matlab - R2016a : error constructing class when package & class name are equal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com