Проблема возникает, когда я пытаюсь использовать объекты-манипуляторы MATLAB в качестве значений ключа в контейнерах MATLAB. Карта .
ld( h1, h2 )
определяет линейный порядок наобрабатывать объекты, поэтому не должно быть никаких ограничений на использование объектов-дескрипторов в качестве значений ключей для карт, однако допускаются только целочисленные или строковые типы.
Обходным путем для этой проблемы может быть получение фактических идентификаторов (адресов) дескриптораобъекты (которые в основном сравниваются в функции ld
).
Итак, вопрос: как получить идентификатор объекта дескриптора?
Выяснилось, чтоОбойти это можно , используя постоянные переменные в статических функциях-членах.
В этом случае вам следует наследовать все ваши классы от базового класса, как показано ниже.
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
end