欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

复制构造函数 - MetaTrader 5 的脚本

author emer | 234 人阅读 | 0 人评论 |

以下是适用于 MQL 的一个选项。

该技术称为“复制构造函数”。确保以递归方式复制所有字段,包括复杂数据类型。

请参考下面的示例代码,您将了解它是如何工作的。 

/********************************************************************/
空白类示例()
  {
  打印__功能__);
   一个a1;
   A a2=Fa();//从函数接收对象   a1.工作();
   a1.Report();//1 1 1 1   a2.Report();//3 3 3 3  /*继续使用函数中的对象*/   a2.工作();
   a2.Report();//4 4 4 4  返回;
  }/********************************************************************
   A 类零件*/
结构体C {整数MX; C():mx(0) {}};班级D {民众整数MX; D():mx(0) {} D(D &d):mx(d.mx) {}};/********************************************************************/
班级一个
  {受保护的:
  整数               MX;  //简单的  整数               马[];//大批   C                 mc;  //结构体   D                 d;    //班级
民众:
  /*复制构造函数*/                     A(A &a):mx(a.mx),d(a.d) {数组复制(妈,妈); mc=a.mc;}
  /*显式默认构造函数*/                     A():mx(0){}
  /*方法*/  空白              工作(){mx++;数组调整大小(ma,mx); mc.mx=mx; d.mx=mx;}
  空白              报告() {打印(MX,” “,数组大小(马),” “,mc.mx,” “,d.mx);}
  };/********************************************************************/阿法()
  {
   一个一个;
  为了整数我=0;我<3;我++)
     {a.工作();}//很多工作  返回一个;//返回类对象  }/**/

想要返回一个结构?
通常可以使用函数作为通过引用发送的参数来更新结构。
如果您希望返回带有函数的结构体,也是可能的,但与类不同,结构体不需要显式复制 构造函数。


/********************************************************************/
空白结构示例()
  {
  打印__功能__);
   B b1;
   B b2=Fb();//结构体从函数接收   b1.mx++;
  /**/  打印(b1.mx,” “,数组大小(b1.ma));//  1 0  打印(b2.mx,” “,数组大小(b2.ma));// 10 9  返回;
  }/********************************************************************/
结构体乙
  {
  整数               MX;
  整数               马[];
                     B():mx(0){}//构造函数,正式不需要  };/********************************************************************/BFB()
  {
   乙b;
  为了整数我=0;我<10;我++)
     {b.mx++;数组调整大小(b.ma,i);}//努力工作  返回乙;//结构返回  }/**/



附件下载

📎 copyconstructor.mq5 (5.52 KB)

Source: MQL5 #29357

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录