【问题标题】:Passing objects to other objects in MATLAB将对象传递给 MATLAB 中的其他对象
【发布时间】:2013-01-18 15:14:47
【问题描述】:

我刚开始在 MATLAB 中进行面向对象编程,但我对如何最好地将对象传递给其他对象感到困惑,因为 MATLAB 没有静态类型定义。

我有三个不同的类,它们都包含一些常量。现在,我想在第三个类的方法中使用两个类中定义的常量——我应该怎么做?这些类没有层次结构。

所以,我正在寻找 C++ 中的 #include 之类的东西。

问题如下图所示。如何编写“*Object1”和“*Object2”引用来访问const1和const2?

classdef Object1

    properties (Constant)
        const1 = 100;
    end

    methods
        function Obj1 = Object1()
        end
end

classdef Object2

    properties (Constant)
        const2 = 200;
    end

    methods
        function Obj2 = Object2()
        end
end

classdef Object3

    properties (Immutable)
        property3
    end

    methods
        function Obj3 = Object3()
            Obj3.property3 = *Object1.const1 + *Object2.const2;
        end
end

【问题讨论】:

  • 我想,如果你提供一个例子会更清楚。另外,如果您不必这样做,请不要参与 matlab 中的 OOP,坚持使用它们更实用、更传统的模式。
  • 感谢您的提示。我宁愿使用 OOP,因为目前我的函数实现中有 10 多个全局变量,并且不将它们定义为全局变量,我应该在许多函数调用中包含许多这些常量,这似乎有点令人生畏并且也不清楚。我想最好将结构与函数实现一起使用,但我仍然认为恒定访问限制是 OOP 相对于函数的优势。但是让我们看看,当我运行 OOP 时,它如何处理对象之间传递的常量。

标签: matlab object constants


【解决方案1】:

只要去掉星号,我认为你有你需要的。

您的代码中还有一些其他语法错误(将Immutable 替换为SetAccess = immutable,并将缺少的ends 添加到classdefs),但是一旦我进行了这些更改,我就会得到:

a = Object3
a = 
  Object3

  Properties:
    property3: 300
  Methods

一般来说,要从另一个类引用 Constant 属性,只需在属性前面加上类名(如果类在包中,还可以是包名)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    相关资源
    最近更新 更多