新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 93

 
Vikon:
打印只能插入到一个函数里面,但我不明白如何调用这个函数来使打印或警报工作。你能帮忙用三个简单的变量修正我的代码吗?我按照文章中的描述做了所有的事情,但是编辑器没有显示出来,或者缺少一些东西,或者缺少一些东西,总之就是墙,所以我请求帮助。谢谢你的SKC。

你在输出d的时候,有一个警报。

它是在哪里计算的?

//+------------------------------------------------------------------+
//|                                                      TestASD.mq4 |
//|              Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      InputA=1;
input int      InputB=3;

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
   int c(int m_a,int m_b)
     {
      m_a=a+b; m_b=a-b;
      int m_d=m_a+m_b;
      d=m_d;
      Print(__FUNCTION__);
      return(c(m_a,m_b));
     }
public:
   int               a;
   int               b;
   int               d;
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
ASD   ar;
void OnStart()
  {
//---
   ar.a=InputA;
   ar.b=InputB;
   Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d);
  }
//+------------------------------------------------------------------+
那么什么方法会返回调用自己的结果呢?
 
Artyom Trishkin:
在类的内部,对值进行普林。然后在日志中看看运行脚本时将打印出什么;)

所以这也是可以的。

类。

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
  
  int a_s;
  int a_d;
  int d;

int g ()
{d=a_s+a_d;
return (g());
}

public:
void fg (int a,int b)
{ a_s=a;
   a_d=b;
}
void sf ()
  {g ();
  Alert (d);}

  };


剧本

#include <ASD.mqh>
ASD ar;
void OnStart()
  {

   ar.fg (3,5);
   ar.sf ();
}
 
Vikon:

所以这也是可以的。

类。

这并不清楚--你想得到什么?
 
Vikon:

所以也没有什么

//+------------------------------------------------------------------+
//|                                                      TestASD.mq4 |
//|              Copyright 2017, Artem A. Trishkin, Skype artmedia70 |
//|                       https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Artem A. Trishkin, Skype artmedia70"
#property link      "https://login.mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int      InputA=1;
input int      InputB=3;

class ASD
  {
private:
   // Здесь располагаются переменные и функции, доступные только внутри класса
public:
   int               a;
   int               b;
   int               d;
   int c(int m_a,int m_b)
     {
      m_a=a+b; m_b=a-b;
      d=m_a+m_b;
      Print(__FUNCTION__);
      return(d);
     }
  };
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
ASD   ar;
void OnStart()
  {
//---
   ar.a=InputA;
   ar.b=InputB;
   Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d,"\nar.c(",ar.a,",",ar.b,")=",ar.c(ar.a,ar.b));
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:
这并不清楚--你想得到什么?

我愿意。

1.将数据从脚本传递到类中
2.在班级中对这些数据进行汇总
3.将类中的和传递给脚本
4.从脚本中,在显示器或打印机上打印出数据的总和。

一切都是!

 
Vikon:

我愿意。

1.将数据从脚本中传递给类
2.在班级中对这些数据进行汇总
3.将类中的和传递给脚本
4.从脚本中,将数据的总和输出到显示器或打印机。

全部!

见上述例子
 
Artyom Trishkin:
见上述例子
但它也没有给出变量a+b=d的总和,而我需要d的总和!这笔钱应该在私下里计算:否则,就会有墙。
 
Vikon:
但它也没有计算出变量a+b=d的总和,而我需要的是d的总和!

我没有告诉你到底应该怎么算。我向你展示了如何获得计算值--调用 c()函数

你没有在任何地方调用它,而是等着D以某种方式自行计算。

而c()函数计算的内容是由你决定的

 
Artyom Trishkin:

我没有告诉你到底应该怎么算。我向你展示了如何获得计算值--调用 c()函数

你没有在任何地方调用它,你在等待D以某种方式自行计算。

而你要自己决定c()函数算什么!

我知道如何在专家顾问中创建和调用该函数,我也在使用它。这个问题是关于班级的!

 
Artyom Trishkin:

我没有告诉你到底应该怎么算。我向你展示了如何获得计算值--调用 c()函数

你没有在任何地方调用它,你在等待D以某种方式自己计算出来。

而c()函数计算的内容是由你决定的

这就是重点,如何在一个类里面调用一个函数,即如何私有:公有:,如何向一个类传递数据,以及如何从这个类中获得结果。到目前为止,这就是它!

但你的函数也没有计算出任何东西。

原因: