Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 93

 
Vikon:
Drucke können nur innerhalb einer Funktion eingefügt werden, aber ich verstehe nicht, wie ich diese Funktion aufrufen kann, damit der Druck oder die Warnung funktioniert. Können Sie mir helfen, indem Sie meinen Code mit drei einfachen Variablen korrigieren? Ich tue alles, wie in dem Artikel beschrieben, aber der Editor funktioniert nicht, oder etwas fehlt, oder etwas nicht verstanden wird, in jedem Fall, die Wand, so dass ich um Hilfe gebeten. Danke für den SKC.

Sie geben d mit einem Alert aus.

Wo wird sie berechnet?

//+------------------------------------------------------------------+
//|                                                      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);
  }
//+------------------------------------------------------------------+
Und was ist die Methode, die das Ergebnis ihres eigenen Aufrufs zurückgibt?
 
Artyom Trishkin:
Nehmen Sie innerhalb der Klasse Drucke auf Werte vor. Und dann schauen Sie in das Protokoll, was bei der Ausführung des Skripts ausgegeben wird ;)

Und so ist es auch in Ordnung.

Klasse:

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

  };


das Drehbuch

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

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

Und so ist es auch in Ordnung.

Klasse:

Es ist nicht klar - was wollen Sie bekommen?
 
Vikon:

Und so auch nichts

//+------------------------------------------------------------------+
//|                                                      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:
Es ist nicht klar - was wollen Sie bekommen?

Das tue ich:

1. Daten aus dem Skript an die Klasse zu übergeben
2. diese Daten in der Klasse summieren
3. Übergabe der Summe von der Klasse an das Skript
4. Drucken Sie aus dem Skript die Summe der Daten auf einem Monitor oder einem Drucker aus.

Alles!

 
Vikon:

Das tue ich:

1. Übergabe von Daten aus dem Skript an die Klasse
2. diese Daten in der Klasse summieren
3. Übergabe der Summe von der Klasse an das Skript
4 Geben Sie die Summe der Daten über das Skript auf einem Monitor oder Drucker aus.

Alle!

Siehe obiges Beispiel
 
Artyom Trishkin:
Siehe obiges Beispiel
Aber es ergibt auch nicht die Summe der Variablen a+b=d, und ich brauche die Summe von d! Und dass diese Summe unter Ausschluss der Öffentlichkeit berechnet werden sollte: sonst die Wand!
 
Vikon:
Aber es berechnet auch nicht die Summe der Variablen a+b=d, während ich die Summe von d brauche!

Ich habe Ihnen nicht genau gezeigt, was sie zählen sollte. Ich habe Ihnen gezeigt, wie Sie den berechneten Wert erhalten - rufen Sie die Funktion c() auf;

Sie haben ihn nirgends aufgerufen und darauf gewartet, dass sich d irgendwie selbst berechnet.

Und was die Funktion c() berechnet, bleibt Ihnen überlassen

 
Artyom Trishkin:

Ich habe Ihnen nicht genau gezeigt, was sie zählen sollte. Ich habe Ihnen gezeigt, wie Sie den berechneten Wert erhalten - rufen Sie die Funktion c() auf;

Sie haben ihn nirgends genannt und darauf gewartet, dass sich d irgendwie selbst berechnet.

Und was die Funktion c() zählt, müssen Sie selbst entscheiden!

Ich weiß und benutze, wie man die Funktion im Expert Advisor erstellt und aufruft. Die Frage bezieht sich auf den Unterricht!

 
Artyom Trishkin:

Ich habe Ihnen nicht genau gezeigt, was sie zählen sollte. Ich habe Ihnen gezeigt, wie Sie den berechneten Wert erhalten - rufen Sie die Funktion c() auf;

Sie haben es nirgendwo genannt und darauf gewartet, dass d sich irgendwie selbst berechnet.

Und was die Funktion c() berechnet, bleibt Ihnen überlassen

Das ist der Punkt, wie man eine Funktion innerhalb einer Klasse aufruft, nämlich wie private: public:, wie man Daten an eine Klasse übergibt und wie man das Ergebnis von der Klasse erhält. Das war's bisher!

Aber auch Ihre Funktion berechnet nichts.

Grund der Beschwerde: