2017-04-04 54 views
0

我在确定标题时遇到了困难,应该简单明了。如果您可以简化标题,请继续进行编辑。单元格数组赋值结果返回到“对象”而不是预期的对象“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 

我在做什么错?

回答

2

默认情况下,MATLAB中的所有类都是value classes,并且在您执行任务时被复制(按值)。为了访问我的参考类,您需要继承MATLAB的内置handle类。

classdef Model < handle 

documentation中的句柄和值类之间的区别有广泛的描述。

相关问题