【发布时间】:2013-02-25 18:15:52
【问题描述】:
我是面向对象编程的新手,尤其是 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
但是如果我想删除引用 e 中实例的节点 n1
e.node1=[]
那么对象e中的对象node1就没有了,但是Node变量n1还在。
我的想法(并且想要)是变量 n1 和 e.node1 是同一个东西,但看起来 MATLAB 创建了节点 n1 的两个实例,一个是 n1 本身,另一个是 node1在对象 e 中,虽然我可以从 node1 引用 n1 的值。
我的问题是,如果我想从其关联的 e 中删除 n1,那么这样做的有效方法是什么?任何其他关于面向对象的 MATLAB 背景的解释都是绝对欢迎的。
【问题讨论】: