Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 如何获取MatlabHandle对象的ID?_Oop_Matlab_Object_Handle - Fatal编程技术网

Oop 如何获取MatlabHandle对象的ID?

Oop 如何获取MatlabHandle对象的ID?,oop,matlab,object,handle,Oop,Matlab,Object,Handle,当我试图在中用作键值时,问题就出现了 ld(h1,h2)定义了句柄对象的线性顺序,因此使用句柄对象作为映射的键值应该没有限制,但是只允许使用整数或字符串类型 这个问题的一个解决方法是检索句柄对象的实际ID(地址)(基本上在ld函数中进行比较) 所以问题是:如何获取句柄对象的ID 发现可以在静态成员函数中使用持久变量来解决问题 在这种情况下,您应该从基类继承所有类,如下所示 classdef object < handle properties ( GetAccess = 'public'

当我试图在中用作键值时,问题就出现了

ld(h1,h2)
定义了句柄对象的线性顺序,因此使用句柄对象作为映射的键值应该没有限制,但是只允许使用整数或字符串类型

这个问题的一个解决方法是检索句柄对象的实际ID(地址)(基本上在
ld
函数中进行比较)

所以问题是:如何获取句柄对象的ID


发现可以在静态成员函数中使用持久变量来解决问题

在这种情况下,您应该从基类继承所有类,如下所示

classdef object < handle
properties ( GetAccess = 'public', SetAccess = 'private' )
    id
end

methods ( Access = 'protected' )
    function obj = object()
        obj.id = object.increment();
    end
end

methods ( Static, Access = 'private' )
    function result = increment()
        persistent stamp;
        if isempty( stamp )
            stamp = 0;
        end
        stamp = stamp + uint32(1);
        result = stamp;
    end
end  
classdef对象

end

我从未听说过Java/C中的object
HashCode
应用于MatlabOO。如果你在Matlab对象中获得了地址(类型<代码>格式调试< /COD>),使用它仍然不合理,因为它不会在C++中保持相同的状态,而是会被系统(托管内存)移动。 您可以为MATLAB对象手动实现接口
getHashCode()
。与传统的hashcode不同,您必须确保hashcode对于不同的对象总是不同的,这不是一项简单的任务


MATLAB默认比较器函数
sort
显然在内部使用对象hashcode,但这对您没有帮助-比较对象实际上是一个与其hashcode正交的概念。

您的意思可能不是
ld
,而是关系运算符
lt
,即
低于