"我的问题"
如果我有一个叫做SomeClass的本地类,运行下面的脚本m:
某个类m
classdef SomeClass
end
手写体. m
t = ?SomeClass;
t
cd('SomeDir');
t
cd('..');
t
然后Matlab(R2018b)将输出以下内容:
t =
class with properties:
Name: 'SomeClass'
Description: ''
DetailedDescription: ''
Hidden: 0
Sealed: 0
Abstract: 0
Enumeration: 0
ConstructOnLoad: 0
HandleCompatible: 0
InferiorClasses: {0×1 cell}
ContainingPackage: [0×0 meta.package]
RestrictsSubclassing: 0
PropertyList: [0×1 meta.property]
MethodList: [2×1 meta.method]
EventList: [0×1 meta.event]
EnumerationMemberList: [0×1 meta.EnumeratedValue]
SuperclassList: [0×1 meta.class]
t =
handle to deleted class
t =
handle to deleted class
所以在cd命令之后,变量t现在指向:
handle to deleted class
所以我的问题是:
1.为什么会发生这种情况?
1.我能做些什么来解决/规避它?
- 奖金信息**
在我编写的实际软件中(50K行怪物),上述问题几乎发生在所有包含meta. class的变量中。是的,我说几乎:)这是stranges部分,所以有时候它发生在一些类上,而不是其他类上?所以在我遇到这个问题的特定情况下,我有两个类在子包中,类似于:
package.subpackage.ExampleReport
package.subpackage.FlowchartReport
这两个类几乎相同,并且是同一个基类的子类。?package. subpackage. ExampleReports的所有变量即使在cd命令之后仍然存在。但是指向?package.subpackage.FlowchartReports的变量不存在。遗憾的是,我无法在一个简单的示例中重现这一点。
- 为什么我不能跳过cd()命令**
我使用system()命令运行一个windows命令行程序。在这个特定的例子中,我位于正确的路径上对于调用正常工作是很重要的。
1条答案
按热度按时间whlutmcx1#
我遇到了一个类似的问题,发现了这个问题(我自己的)。由于它没有任何答案,我将分享我是如何解决这个问题的。
我创建了一个类(MetaContainer)来存储元类的名称,如果元类被删除,MetaContainer将使用meta.class.fromName()重新创建它