我是面向对象编程的新手,尤其是 MATLAB。这是关于对象的多个实例的基本问题。
我在简化的设置中描述了我的问题。
首先我定义了两个类:Node 和 Edge,其中 Node 有一个属性值,而 Edge 包含一个 Node:
classdef Node < handle
properties
value
end
和
classdef Edge < handle
properties
node1
end
然后我创建了一个节点和一个边
n1=Node;
e=Edge;
我把这个节点关联到边 e
e.node1=n1;
现在问题来了,如果我将值分配给 n1
n1.value=5;
我可以用预期的答案从 e 引用这个值:
e.node1.value
ans = 5
但是如果我想删除节点 n1 引用 e 中的实例
e.node1=[]
那么对象e中的对象node1就没有了,但是Node变量n1还在。
我的想法(并且想要)是变量 n1 和 e.node1 是同一件事,但看起来 MATLAB 创建了节点 n1 的两个实例,一个是 n1 本身,另一个是对象内部的 node1 e,虽然我可以从 node1 中引用 n1 的值。
我的问题是,如果我想从其关联的 e 中删除 n1,那么这样做的有效方法是什么?任何其他关于面向对象的 MATLAB 背景的解释都是绝对欢迎的。