【问题标题】:Matlab -- handle objectsMatlab——处理对象
【发布时间】:2013-02-14 15:46:06
【问题描述】:

有句柄类Foo:

classdef Foo < handle   
    properties (SetAccess = public, GetAccess = public)
        x
    end

    methods
        function obj = foo(x)
            % constructor
            obj.x = x;
        end 
    end       
end

我创建了一个Foo的对象:

data = [1 2];
foo = Foo(data);  % handle object

我想创建一个指向foo.x 的引用(句柄)变量a。这在 Matlab 中可能吗?例如,以下内容不起作用:

a = foo.x;       % here `a` equals [1 2], `a` is not a handle object  
foo.x = [3 4];   % set property `x` to [3 4];
disp(a);         % a still equals [1 2] 
                 % even though the property `foo.x` has changed
                 % I want `a` to change when `foo.x` is changed.

【问题讨论】:

    标签: matlab pass-by-reference handle


    【解决方案1】:

    不,不幸的是,这在 Matlab 中是不可能的。引用只能是从句柄继承的某些类的实例的对象(例如您的类Foo)。即,这是可能的:

    bar = foo
    foo.x = [3 4]
    disp(bar.x)      % would be [3 4]
    

    【讨论】:

    • 谢谢。是的,不幸的是,这是 Matlab 的一大局限。
    猜你喜欢
    • 2012-04-16
    • 2011-05-26
    • 1970-01-01
    • 2020-05-13
    • 2011-04-26
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多