Любые вопросы новичков по 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:
Внутри класса сделайте Print'ы значениям. А потом глядите в журнале что там будет распечатано при запуске скрипта ;)

И так также ничего

класс:

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! И что бы эта сумма вычислялась в private: иначе стена!
 
Vikon:
Но он тоже сумму переменных a+b=d не выдает, а мне нужна сумма d!

Я не показывал то, что он должен считать по-вашему именно. Я показал как нужно получить рассчитанное значение - вызвать функцию c();

Вы же её нигде не вызывали, и ждали что d как-то сама собой посчитается.

А уж что там считает функция c() - это вам решать

 
Artyom Trishkin:

Я не показывал то, что он должен считать по-вашему именно. Я показал как нужно получить рассчитанное значение - вызвать функцию c();

Вы же её нигде не вызывали, и ждали что d как-то сама собой посчитается.

А уж что там считает функция c() - это вам решать

Как создать функцию и вызвать ее в эксперте я знаю и пользуюсь. Вопрос возник с классами!

 
Artyom Trishkin:

Я не показывал то, что он должен считать по-вашему именно. Я показал как нужно получить рассчитанное значение - вызвать функцию c();

Вы же её нигде не вызывали, и ждали что d как-то сама собой посчитается.

А уж что там считает функция c() - это вам решать

В том то все и дело как вызвать функцию внутри класса, а именно как работают между собой  private: public:, как передать данные классу и получить результат из класса. Пока вот это!

Но и ваша функция ничего не расчитывает. 

Причина обращения: