Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 93

 
Vikon:
Les impressions ne peuvent être insérées que dans une fonction, mais je ne comprends pas comment appeler cette fonction pour que l'impression ou l'alerte fonctionne. Pouvez-vous m'aider en corrigeant mon code avec trois simples variables ? Je fais tout ce qui est décrit dans l'article, mais l'éditeur ne s'affiche pas, ou il manque quelque chose, ou il manque quelque chose, en tout cas, le mur, alors j'ai demandé de l'aide. Merci pour le SKC.

Vous êtes en train de sortir d avec une alerte.

Où est-il calculé ?

//+------------------------------------------------------------------+
//|                                                      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);
  }
//+------------------------------------------------------------------+
Et quelle méthode qui renvoie le résultat de son propre appel ?
 
Artyom Trishkin:
À l'intérieur de la classe, faites des impressions sur les valeurs. Et regardez ensuite dans le journal ce qui sera imprimé lors de l'exécution du script ;)

Et donc c'est aussi bien.

classe :

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);}

  };


le scénario

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

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

Et donc c'est aussi bien.

classe :

Ce n'est pas clair - que voulez-vous obtenir ?
 
Vikon:

Et donc aussi rien

//+------------------------------------------------------------------+
//|                                                      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:
Ce n'est pas clair - que voulez-vous obtenir ?

Je le fais :

1. pour passer les données du script à la classe
2. additionner ces données dans la classe
3. passer la somme de la classe au script
4. à partir du script, imprimez la somme des données sur un moniteur ou une imprimante.

Tout !

 
Vikon:

Je le fais :

1. passer les données du script à la classe
2. additionner ces données dans la classe
3. passer la somme de la classe au script
4. à partir du script, sortez la somme des données sur un moniteur ou une imprimante.

Tous !

Voir l'exemple ci-dessus
 
Artyom Trishkin:
Voir l'exemple ci-dessus
Mais cela ne donne pas non plus la somme des variables a+b=d, et j'ai besoin de la somme de d ! Et que cette somme doit être calculée en privé : sinon le mur !
 
Vikon:
Mais il ne calcule pas non plus la somme des variables a+b=d, alors que j'ai besoin de la somme de d !

Je ne t'ai pas montré exactement ce que ça devrait compter. Je vous ai montré comment obtenir la valeur calculée - appelez la fonction c() ;

Vous ne l'avez appelé nulle part, et vous avez attendu que d se calcule d'une manière ou d'une autre.

Et ce que la fonction c() calcule, c'est vous qui le décidez.

 
Artyom Trishkin:

Je ne t'ai pas montré exactement ce que ça devrait compter. Je vous ai montré comment obtenir la valeur calculée - appelez la fonction c() ;

Vous ne l'avez appelé nulle part, et vous attendiez que d se calcule d'une manière ou d'une autre.

Et c'est à vous de décider ce que la fonction c() compte !

Je sais comment créer et appeler la fonction dans le conseiller expert, et je l'utilise. La question porte sur les cours !

 
Artyom Trishkin:

Je ne t'ai pas montré exactement ce que ça devrait compter. Je vous ai montré comment obtenir la valeur calculée - appelez la fonction c() ;

Tu ne l'as appelé nulle part, et tu attendais que d se calcule d'une manière ou d'une autre.

Et ce que la fonction c() calcule, c'est vous qui le décidez.

C'est le but, comment appeler une fonction à l'intérieur d'une classe, à savoir, comment private : public :, comment passer des données à une classe et comment obtenir le résultat de la classe. Jusqu'à présent, c'est ça !

Mais votre fonction ne calcule rien non plus.