巴解组织。应用问题 - 页 10

 

Interesting:

亚历山大(AlexSTAL)提出的方法可能已经解决了这个问题(我们先不考虑它的某些问题性)。

哇哦,哇哦,哇哦,哇哦!

我没有建议这样做,我说有这种可能性。

那你有什么问题,我听不懂?

你一定是在讨论一个例子,其中一半的逻辑是缺失的,一半是错误的(从OOP的诞生开始留下的)?

 
AlexSTAL:

哇哦,哇哦,哇哦,哇哦!

我没有建议这样做,我说有这种可能性。

那你有什么问题,我听不懂?

比方说,你需要把不同的对象放在一个数组中。

同时,这些对象的所有属性都应该存储在同一个数组中+应该有对所有事件和方法的访问。

据我所知,你提供的可能性(实现可能不同)允许访问对象的功能(事件和方法)。

但是在一个具有祖先类型的数组中存储数据是不可能的(鉴于这些数据没有在祖先中声明)。


让我澄清一下我的想法。

如果我们停留在这个特定的例子,那么。

1.例如,我们可以创建一个数组,它将存储对象的类型、X的位置、Y的位置。

2.我们可以尝试通过指针来识别一个唯一的对象(尽管在处理一个对象 时,指针可能不会被使用,那么最好是有一个类似句柄的东西)。

一个愚蠢的问题(我没有看到其他解决办法),为什么使用指针作为句柄(在祖先中创建一个属性并在构造函数中填充)?

我们没有得到在数组中存储后代属性的能力(只有那些在祖先中没有定义的属性)。例如,据我所知,我们不能在数组中存储圆的半径或正方形的边。

 
Interesting:

3.我们没有得到在数组中存储后代属性的能力(只有那些没有在祖先中铸成的属性)。例如,据我所知,我们不能在数组中存储圆的半径或正方形的边。

为什么它不工作...你不直接处理它们,而是使用你的 "GetValue "函数,加上 "半径 "参数(如果该对象是一个圆)...这是一种可能性...

你设定一个简单的具体任务

 
AlexSTAL:

为什么它不工作...你不直接处理它们,而是使用你的 "GetValue "函数,加上 "半径 "参数(如果该对象是一个圆)...这是一种可能性...

你设定了一个简单、具体的问题

任务很简单,但谁又能说它很容易实施呢。

任务是将各种对象(基类的后代)和它们的数据一起记录到一个数组中。

让我们把话说清楚,连同他们的数据一起!!!。

2.每个子代的GetArea()。

3.增加以下功能。

a. 计算正方形的周长-边*4。

б.圆的周长的计算 -2πR

3.在库中添加额外的形状--矩形(两边)和三角形。

4.增加以下功能。

a. 计算一个长方形的面积--底乘高。

б.计算一个长方形的周长--边长之和*2。

в.计算一个三角形的面积。

г.计算一个三角形的周长。

5.单独识别每个对象(在所有对象中和在其类别的对象中)。

最好是有或没有指针

6.只用存储在数组中的数据来计算图形的周长和面积。


PS

不允许将代码从后代转移到祖先(除非这个代码适用于所有祖先)。

例如,你不能将半径转移到祖先中,因为正方形、矩形和圆形都没有半径。

只要新功能适用于所有的后代,就可以添加到祖先上。

我们以预告片中的代码为基础。

Когда нужно использовать указатели в MQL5
Когда нужно использовать указатели в MQL5
  • 2010.03.25
  • MetaQuotes Software Corp.
  • www.mql5.com
Все объекты в MQL5 по умолчанию передаются по ссылке, но есть возможность использовать и указатели объектов. При этом есть опасность получить в качестве параметра функции указатель неинициализированного объекта. В этом случае работа программы будет завершена критически с последующей выгрузкой. Автоматически создаваемые объекты как правило такой ошибки не вызывают, и в этом отношении они достаточно безопасны. В этой статье мы попробуем разобраться в чем разница между ссылкой и указателей, когда оправдано использование указателей и как написать безопасный код с использованием указателей.
附加的文件:
Forum-3.mq5  11 kb
 

在一个单一的数组内,我个人只是通过在祖先上添加存储面积和周长的变量+向其写入数据的功能来解决这个问题。

在这种情况下,如果GetArea()和其他函数的直接计算结果被控制。

我似乎没有违反自己的规则。

 

我已经勾勒出实施你所描述的方法的一种方式。

它并不完整,但它是最重要的方法

附加的文件:
_script.mq5  4 kb
 
AlexSTAL:

我已经勾勒出用你描述的方法实施的一种方式。

它并不完整,但它是最重要的方法

方法很明确。这可能是解决类似问题的最佳方案之一。

至少现在是这样。

 
Interesting:

任务很简单,但谁说它很容易实施?

1.任务是将不同的对象(基类的后代)和它们的数据一起写入一个数组中。

...
MQL5中的电子表格 问题已经得到了解决和描述。
 
Urain:
MQL5的电子表格 已经解决和描述了这个问题。

能够读到的东西有多好?:)

这也是不错的方法,虽然据我所知,这两种方法都是在传输/读取一个参数(尽管是不同的类型)时进行计算。

但是,如果有很多参数,而且不可能把它们都装进一个基类,该怎么办呢?

据我所知,要传递的参数的索引应该另外输入(同时,可以在类中创建一个参数按索引堆叠的数组)。

 
Interesting:

能够读到的东西有多好?:)

这也是不错的方法,尽管据我所知,这两种方法都是为传输/读取一个参数而设计的(尽管是不同的类型)。

如果有很多参数,不可能将它们全部纳入基类,该怎么办?

据我所知,可以输入要传递的参数的索引(也可以在一个类中按索引创建一个参数堆叠的数组)?

我读了三遍,仍然不明白信息的内容是什么。