【发布时间】:2015-03-28 23:25:28
【问题描述】:
我想创建一个继承(并充当)双重但也是句柄的类。例如:
a = myHandleDoubleClass(); % Instance of my handle double.
a.val = 1; % Set value of a to 1.
b = a % Assign b to the value of a
% but, b is a double, not object
>> b
b =
1
现在,如果我更改 a 的值(例如设置 a.val = 2),那么 b 也应该更改,以使其具有相同的值(或者更准确地说,a 和 b 都实际上是指向相同值的指针) .
这在 Matlab 中是否可能?
编辑:为了进一步澄清,这些句柄对象稍后应用作普通双精度对象,并且需要在访问操作中充当此类对象(例如 b=a、b=a(ind) 等,而无需显式访问 value 属性(可以使用属性字段设置值,a.val = 1)。目的是拥有一个在许多地方(其他对象,包括补丁)使用的双重对象,您只需在一个地方更改值(由于 handle 属性,所有其他引用都会自动更新)。
示例:
一个应用程序是这样的,用我的双类顶点创建一个补丁
f = [1 2 3];
v = myDoubles();
patch( 'faces', f, 'vertices', v )
v.values = updateValues();
drawnow
因此,每当我在某一点更改值时,补丁也会更新其值,而无需显式进入并更改顶点字段。
【问题讨论】:
-
为什么没有一个具有双参数的 Handle 类?
-
我最近的更新是否涵盖了您需要的情况?
-
我一直在做更多的研究,看起来在Matlab中多重继承是可能的。我需要更多时间来了解您示例的详细信息,但这里的文档让我相信您可能会想要的行为:Subclassing built in class 和 Inheriting from multiple classes。
-
感谢您抽出宝贵的时间,不过不用担心。我厌倦了自己做双重课,但“补丁”不接受它作为数字(甚至重载不是数字),所以最后我只是重载了补丁。
标签: matlab oop operator-overloading