文章 "MQL5 编程基础:列表" - 页 7

 
因为必须使用 switch,所以就失去了意义。如果是这样的话,就可以不做多余的改动,只需为每种类型的对象使用不同的数组即可。所以,"国王是赤身裸体的"。
 

有时,这里的许多人或某些人似乎混淆了狂热与现实、理想与可能。

他们不是拿着铁锹去挖掘,而是老谋深算地炫耀铁锹的主题:"也许这里是边缘,所以要把它磨得锋利些","也许这里有一个转角"....。一切都在铲子的层面上结束。

 
Integer:
因为必须使用 switch,所以就失去了意义。如果是这样的话,就可以不做多余的改动,只需为每种类型的对象使用不同的数组即可。所以,"国王是赤身裸体的"。

这证明了工作表可以包含任何类型的对象。另外,如果每种类型都包含有关其类型的附加信息,那么就可以动态识别。这种 "附加信息 "是一个薄弱环节,但不幸的是,MQL 没有提供类型控制工具,所以我们不能没有它。如果有人知道更好的解决方案:请提交代码,我们会很乐意看到它。

好像您的评论暗示您还没有处理过 "模板方法 "模式)))

 
C-4:

演示工作表可以包含任何类型的对象。

2.您的评论暗示您没有处理过 "模板方法 "模式)) ))

1. 这当然很好。但它有什么用呢?

2.是的,那么......?我是不是失去了很多?这又是一次关于如何用铲子 "磨 "或 "弯 "东西的对话。

 
我们这里所说的 "模式 "是什么?是某个人把自己的思维方式强加于人,而所有人都跟着起舞吗?为什么这些 "模式 "会被提升到如此高的地位?
 
Integer:

1. 这当然很好。但有什么用呢?

2.是的,还有......?我损失惨重吗?这又不是关于优点的对话,而是关于如何在铲子那里 "磨 "或 "弯 "东西的话题。

那么,任务是什么?要做什么?不是要求用一个节点展示不同班级的作品吗?
 

我还设法把不同的对象放到一个数组中,并注意到这样做更直观,因为没有多余的东西:

class base{
   private:
   public:   
};

class cl1:public base{
   private:
      int m_v1;
      int m_v2;
   public:  
   void cl1(int v1,int v2){
      m_v1=v1;
      m_v2=v2;   
   }
   void f1(){
      Alert("(1) "+m_v1);
   }
   void f2(){
      Alert("(1) "+m_v2);   
   }
};

class cl2:public base{
   private:
      int m_v1;
      int m_v2;
   public:  
   void cl2(int v1,int v2){
      m_v1=v1;
      m_v2=v2;   
   }
   void f3(){
      Alert("(2) "+m_v1); 
   }
   void f4(){
      Alert("(2) "+m_v2); 
   }
};

base * a[];

int x1=1;
int x2=2;

int x()
  {
   
   return(x1=x2);
  }

void OnStart()
  {

   ArrayResize(a,10);
   
   cl1 * a1;
   
   a[0]=new cl1(1,2);
   a[1]=new cl2(3,4);  
   
}

那又怎样?什么都没有。重载不起作用,你需要注册类型,然后通过切换。这就是乐趣所在。

 
Integer:
我们这里所说的 "模式 "是什么?是某个人把自己的思维方式强加于人,而所有人都跟着起舞吗?为什么这些 "模式 "被抬得这么高?
不,没什么,别担心...没事的只是有一天,一群程序员归纳出了一些通用算法,并称之为 "模式"。想想看,这些白痴还为此出了一本书:))))))!人们无事可做!
 
C-4:
任务是什么?要做什么?我以为你要求展示不同的类如何与一个节点协同工作。
是的这当然很酷。但事实证明,这并不是我们需要的全部。
 
Integer:

我还设法将不同的对象放入一个数组中,并注意到它更加清晰,因为没有多余的东西

那又怎样?什么都没有。重载不起作用,你需要注册类型,然后通过切换。这就是乐趣所在。

没有额外的东西?你的类是 100% 的冗余。cl1 的所有方法和数据几乎完全被 cl2 类重复,而 base 类则是空的。