给OOP专家的一个问题。 - 页 41

 
Vladimir Simakov:
糟糕。你想如何复制mql上的委托?只是为了好玩,为了提高BSD。

模拟不能,这样做了,在MT4中检查到目前为止是有效的,但在MT5中不再有效。

typedef void(*TFuncvoidPTR)(void);
//+------------------------------------------------------------------+
void OnStart()
{  TFuncvoidPTR arrPTR[3];
   arrPTR[0]=f1;
   arrPTR[1]=f2;
   arrPTR[2]=f3;
   for(int i=0; i<3; i++)
      arrPTR[i]();			// ' ) ' - expression expected

}
//_______________________________________________________________________
void f1() { Print("1"); }
void f2() { Print("2"); }
void f3() { Print("3"); }
//+------------------------------------------------------------------+

2019.10.06 16:22:44.202 tst EURUSD,H1: 3

2019.10.06 16:22:44.202 tst EURUSD,H1: 2

2019.10.06 16:22:44.202 tst EURUSD,H1: 1

 
Igor Makanu:

模拟不能,这样做了,在MT4中检查到目前为止是有效的,但在MT5中不再有效。

2019.10.06 16:22:44.202 tst EURUSD,H1: 3

2019.10.06 16:22:44.202 tst EURUSD,H1: 2

2019.10.06 16:22:44.202 tst EURUSD,H1: 1

与c#的根本区别在于这一行:arrPTR[0]=f1。

它应该是这样的:arrPTR[0]=new tralala(f1)。

或者类似这样的事情。我不明白的是,怎么会有人想这么做?而要谈论别人的思维是否充分。
 
Dmitry Fedoseev:

与c#的根本区别在于,这一行:arrPTR[0]=f1。

它应该是这样的:arrPTR[0]=new tralala(f1)。

或者类似这样的事情。这就是我不明白的地方--一个人怎么可能设法想要这样的东西?而要谈论别人的思维是否充分。

在夏普,这个概念是:"从所有现有的语言中取材 "+在任何情况下以纯粹和强制性的OOP形式添加魔法--你可以得到任何解决方案,直到

int a = new int();
char b = new Char();
string c = new string(new char[] { });
string d = String.Empty;
String e = String.Empty;


看到这段代码后,C++程序员开始寻找其中的隐藏含义....。但这没有意义!- 唯一的意义是把所有的非程序员都集中在C#下,imho ))))

 

找到了无限制的继承导致对象 "退化 "的原因。

解释一下。

1.我们声明一个基(抽象)类A。

2.我们从它那里构建一个长的继承链。为此,我们从A创造了10个继承人,并从每个继承人中创造了10个后裔。我们有10条直接的继承链,每条链有10个类。

3.每个类都有独特的10个属性和10个方法。由于它们的独特性,属性和方法被顺利地封装在类中,并在它们的基础上建立了一个代表基础对象 "优雅 "结构的清晰层次。

4.但是,看吧,独特的属性用完了。新的 "对象 "出现--通过不同类和不同链的属性和方法的交叉而 "诞生"。 它们没有直接从A处继承的链条,而是通过许多通往基础对象的链条来继承其属性。

同时,从 "唯一 "对象继承它们的属性,"混合 "对象只继承它们的少数属性和方法,其他的则无人问津。它们继承了许多类,但应该只取其 "继承 "的部分材料,其余的不做处理。但这是不可能的。通过访问他们的类,他们继承了任何可用的东西。

换句话说,他们的继承权是不明确的。通过访问它们的 "父母",这些对象获得了它们不需要的属性和方法。而且没有办法避免这些 "多余的东西"。

这意味着,当有大量的后代时,继承权就会停止正常工作。物体 "退化 "是因为 "父母 "的设置和 "遗传物质 "的过度多样性的概括。 物体不再具有概念上的一致性。


 
不,这不可能发生。在继承的第6-8级左右,发生了突变,发生了机器起义。
 
Реter Konow:

找到了不受限制的继承导致对象 "退化 "的原因。

解释一下。

1.我们声明一个基(抽象)类A。

2.我们从它那里构建一个长的继承链。为此,我们从A创造了10个继承人,并从每个继承人中创造了10个后裔。我们有10条直接的继承链,每条链有10个类。

3.每个类都有独特的10个属性和10个方法。由于它们的独特性,属性和方法被顺利地封装在类中,并在它们的基础上建立了一个代表基础对象 "优雅 "结构的清晰层次。

4.但是,看吧,独特的属性用完了。新的 "对象 "出现--通过不同类和不同链的属性和方法的交叉而 "诞生"。 它们没有直接从A处继承的链条,而是通过许多通往基础对象的链条来继承其属性。

同时,从 "唯一 "对象继承它们的属性,"混合 "对象只继承它们的少数属性和方法,其他的则无人问津。它们继承了许多类,但应该只取其 "继承 "的部分材料,其余的不做处理。但这是不可能的。通过访问他们的类,他们继承了任何可用的东西。

换句话说,他们的继承权是不明确的。通过访问它们的 "父母",这些对象获得了它们不需要的属性和方法。而且没有办法避免这些 "多余的东西"。

这意味着,当有大量的后代时,继承权就会停止正常工作。物体 "退化 "是因为 "父母 "的设置和 "遗传物质 "的过度多样性的概括。 物体不再具有概念上的一致性。


所以--错误的概念被建立起来了。
为什么要从 "框架 "对象中继承车体和肖像?
 
Artyom Trishkin:
所以--错误的概念被建立起来了。
为什么要从 "框架 "对象中继承车体和肖像?

在小任务领域,不需要一个巨大的继承层次结构。但是,人工智能知识库的层次结构,几乎是无限的。我得出的结论是,对象的层次结构在一定限度内是方便、实用和有效的,之后就开始 "多重 "继承,导致对象世代的 "退化"。新的对象被从基地中移除,其属性是 "次要的",因为它们是从其他对象中收集的。在 "收集 "属性的过程中,新的对象吸收了额外的 "继承材料",这些材料被 "楔入 "它们的操作中。

我不知道如何解决这个问题。

 

以防有人读到它,https://tproger.ru/translations/oop-principles-cheatsheet/

虽然我很怀疑,但资产阶级的工作不是阅读他们写的东西。

 
Igor Makanu:

以防有人读到它,https://tproger.ru/translations/oop-principles-cheatsheet/

虽然我很怀疑,但资产阶级的工作不是阅读他们写的东西。

这篇文章谈到了继承问题。阅读它。

"继承是一个对象以另一个对象的属性为基础的能力"。

但是,如果你有一个第102代对象,它只能从几个对象而不是一个对象继承呢?它将获得额外的属性和方法,与它的 "父母 "的数量成比例。

 
Реter Konow:

在小任务领域,不需要一个巨大的继承层次结构。但是,人工智能知识库的层次结构几乎是无限的。我得出的结论是,对象的层次结构在一定限度内是方便、实用和有效的,之后就开始 "多重 "继承,导致对象世代的 "退化"。新的物体与基地有一定的距离,它们的属性是 "次要的",因为它们是从其他物体上收集的。在 "收割 "属性的过程中,新的对象吸收了额外的 "继承材料",这些材料被 "楔入 "它们的操作中。

不知道如何解决这个问题。

明确分类。如果我们看到多个对象具有相同的属性,那么在一个父对象中描述这些属性是合乎逻辑的。
如果一个子对象覆盖了一个具有相同名称的父对象属性,该属性必须是虚拟的。