4

可能重复:
如何修改 Matlab 对象的属性

我正在尝试将我的 C# 代码转换为 Matlab,在 Matlab 中,我决定使用我尚未与 Matlab 一起使用的 OOP,以便能够处理我的 C# 代码的复杂性。

查看教程,我想出了以下代码:

classdef Cat
    properties
        meowCount = 0; 
    end
    methods 
        function Meow(C)
            disp('meowww'); 
            C.meowCount = C.meowCount + 1;
        end
    end    
end

结果:

>> c = Cat();
>> c.Meow();
meowww
>> c

c = 

  Cat

  Properties:
     meowCount: 0

  Methods

所以,meowCount不变。问题是什么?

4

1 回答 1

8

我注意到的几个问题:

  • 你没有构造函数
  • 你不是从handle基类派生的

构造函数不是绝对必要的,但是对于真正想要开始开发更大的类时了解它非常有用。它用于初始化obj对象,该对象被传递给每个方法。它与 Pythonself或 C++ 的this.

所以,你更正的班级:

classdef Cat < handle

    properties
        meowCount = 0; 
    end

    methods 

        function obj = Cat()
            % all initializations, calls to base class, etc. here,
        end

        function Meow(obj)
            disp('meowww'); 
            obj.meowCount = obj.meowCount + 1;
        end
    end    
end

示范:

>> C = Cat;
>> C.Meow; 
meowww
>> C.meowCount
1
于 2012-08-23T12:09:00.763 回答