【发布时间】:2012-01-18 20:53:41
【问题描述】:
语言:
我正在 MATLAB 中编写面向对象的代码。我写了几乎所有内容,现在在尝试对其进行测试时,遇到了一个看起来非常基本的问题。
代码背景:
我有一个类 Window 和一个类 Tracker。两者都是 Singleton 类的子类(也就是说,它们具有私有构造函数以确保只创建一个 Window 类和 Tracker 类的单个实例)。
我实例化了它们中的每一个——所以我现在有一个 myWindow 和 myTracker 对象。
在我的主脚本中,我调用了一个方法 myWindow.isNewbead()。 isNewbead 是 Window 类的公共方法。
就是这样的场景。现在的问题:
问题:
在 isNewbead() 内部,我调用了 myTracker.getpredictedPositions()。 getpredictedPositions() 是类 Tracker 的公共方法。但是,当我运行此行时,我收到一条错误消息,指出变量“myTracker”未定义。果然,我查看了变量工作区,唯一的变量是局部变量 INSIDE myWindow.isNewbead();
所以我现在有两个问题:
问题:
OOP 无处不在吗?也就是说,不显式地将第一个对象传递给第二个对象的方法,就不能从另一个对象的方法内部调用一个对象的公共方法吗?这对我来说似乎很麻烦,因为我在每个方法中都使用了许多不同类的对象的属性和方法,所以我每次都要传递数百个对象!
如果这只是一个特定于 MATLAB 的问题(如无静态变量的问题),那么我该如何解决呢?
非常感谢!
问候。
【问题讨论】: