单元格数组分配结果返回到 ans 'object' 而不是预期的对象 'obj'



我在决定标题时遇到了麻烦,标题应该足够简单和富有表现力。如果您可以简化标题,请继续编辑它。


我有一个Model类,其中我有一个将node.flow.Pipe对象添加到ModelnodeArray(这是一个单元格数组(中的方法。

classdef Model
    properties
        nodeArray = {} 
    end
    ...        
    methods
        function result = Model()
        end
        function obj = addNode(obj, node)
            size = numel(obj.nodeArray);
            obj.nodeArray{size+1} = node;
        end
    ...
    end        
end

当我创建一个Model对象并node.flow.Pipe对象,然后使用ModeladdNode(node)方法时,Matlab 不是向该对象添加节点,而是创建一个新的对象ans

>> newModel = Model
newModel = 
  Model with properties:
                       nodeArray: {}
                   numberOfNodes: 0
                   stateVariable: []
          numberOfStateVariables: 0
            steadyStateEquations: []
    numberOfSteadyStateEquations: 0
>> newModel.addNode(node.flow.Pipe)
ans = 
  Model with properties:
        nodeArray: {[1×1 node.flow.Pipe]}
    numberOfNodes: 1
>> newModel.nodeArray
ans =
  0×0 empty cell array

我做错了什么?

默认情况下,MATLAB 中的所有类都是值类,并且会在您执行赋值时复制(按值(。为了访问我的引用类,您需要从 MATLAB 的内置handle类继承。

classdef Model < handle

文档中对句柄类和值类之间的区别进行了广泛的描述。

相关内容

最新更新