从重载方法操作“plus”而不是struct返回同一个类的对象?

时间:2017-11-17 16:52:44

标签: matlab class oop object overloading

我有一个MATLAB类,它有一个简单的重载plus函数,我无法让它返回一个对象。我希望函数将每个字段值一起添加并输出相同类的对象,字段值是两个输入的总和。当我将两个对象一起添加时,我得到一个结构,而不是一个对象。我是班级的新手,我可能做错了;任何帮助都会很棒。

代码如下:

classdef Molar
    properties
        A = 0;
        B = 0;
        C = 0;
    end
    methods
        function M = Molar(val)
           M.A = val;
           M.B = val+1;
           M.C = val+2;
        end
        function M = plus(M1,M2)
            M.A = M1.A + M2.A;
            M.B = M1.B + M2.B;
            M.C = M1.C + M2.C;
        end

    end
end

当它运行时我会这样做:

>> x = Molar(2)
x = 
  Molar with properties:

    A: 2
    B: 3
    C: 4
>> y = Molar(3)
y = 
  Molar with properties:

    A: 3
    B: 4
    C: 5

然后,当我执行struct操作时,我得到+。如何让它返回另一个Molar对象?

>> x+y
ans = 
  struct with fields:

    A: 5
    B: 7
    C: 9

我想知道是否需要以不同的方式使用构造函数方法?  在这方面的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

第一个参数应该是返回值:

function M = plus(M,M2)
    M.A = M.A + M2.A;
    M.B = M.B + M2.B;
    M.C = M.C + M2.C;
end