Я не знаю ни одного способа динамического создания объектов, поэтому я бы сказал, что ответ на ваш вопрос: нет . Однако, чтобы решить вашу проблему, я бы предложил нечто очень похожее на то, что сказал Михаил:
Работа со структурой с полями x
, y
и classname
:
p.x=0;
p.y=0;
p.classname='Point';
, а затем написать функцию myclass(x)
, которая возвращает x.classname
. Если по какой-то причине вам нужно использовать class()
, вы можете даже перегружать его своей собственной функцией, которая проверяет, является ли x
одной из ваших специальных структур, и вызывает builtin('class', x)
в противном случае:
function out=class(varargin)
if nargin==1 && isstruct(varargin{1}) ... #check if we were given a struct
&& isfield(varargin{1}, 'classname') ... #...which contains a field classname
&& ischar(varargin{1}.classname) %# ... which is a string
out=varargin{1}.classname; %# ok, our special case :-)
else
out=builtin('class',varargin{:}); %# normal case - call builtin class()
end