Vikon: Le stampe possono essere inserite solo all'interno di una funzione, ma non capisco come chiamare questa funzione per far funzionare la stampa o l'avviso. Puoi aiutarmi sistemando il mio codice con tre semplici variabili? Faccio tutto come descritto nell'articolo, ma l'editor non appare, o manca qualcosa, o manca qualcosa, in ogni caso, il muro, così ho chiesto aiuto. Grazie per l'SKC.
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; voidOnStart() { //--- ar.a=InputA; ar.b=InputB; Alert("ar.a=",ar.a,"\nar.b=",ar.b,"\nar.d=",ar.d); } //+------------------------------------------------------------------+
E quale metodo che restituisce il risultato della chiamata di se stesso?
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; voidOnStart() { //--- 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: Non è chiaro - cosa vuoi ottenere?
Lo faccio:
1. per passare dati dallo script alla classe 2. sommare questi dati nella classe 3. passare la somma dalla classe allo script 4. dallo script, stampare la somma dei dati su un monitor o una stampante.
1. passare i dati dallo script alla classe 2. sommare questi dati nella classe 3. passare la somma dalla classe allo script 4. Dallo script, emetti la somma dei dati su un monitor o una stampante.
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'hai chiamato da nessuna parte, e stavi aspettando che d si calcolasse in qualche modo da solo.
E cosa calcola la funzione c() dipende da voi
Questo è il punto, come chiamare una funzione all'interno di una classe, cioè, come privato: pubblico:, come passare dati a una classe e come ottenere il risultato dalla classe. Finora questo è tutto!
Le stampe possono essere inserite solo all'interno di una funzione, ma non capisco come chiamare questa funzione per far funzionare la stampa o l'avviso. Puoi aiutarmi sistemando il mio codice con tre semplici variabili? Faccio tutto come descritto nell'articolo, ma l'editor non appare, o manca qualcosa, o manca qualcosa, in ogni caso, il muro, così ho chiesto aiuto. Grazie per l'SKC.
State emettendo d con un allarme.
Dove si calcola?
//| 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);
}
//+------------------------------------------------------------------+
All'interno della classe, fate delle stampe ai valori. E poi guardate nel log cosa verrà stampato quando si esegue lo script ;)
E quindi va anche bene.
classe:
{
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);}
};
lo script
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
E quindi va anche bene.
classe:
E così anche niente
//| 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));
}
//+------------------------------------------------------------------+
Non è chiaro - cosa vuoi ottenere?
Lo faccio:
1. per passare dati dallo script alla classe
2. sommare questi dati nella classe
3. passare la somma dalla classe allo script
4. dallo script, stampare la somma dei dati su un monitor o una stampante.
Tutto!
Lo faccio:
1. passare i dati dallo script alla classe
2. sommare questi dati nella classe
3. passare la somma dalla classe allo script
4. Dallo script, emetti la somma dei dati su un monitor o una stampante.
Tutti!
Vedere l'esempio precedente
Ma non calcola nemmeno la somma delle variabili a+b=d, mentre io ho bisogno della somma di d!
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'hai chiamato da nessuna parte e hai aspettato che d si calcolasse in qualche modo da solo.
E cosa calcola la funzione c() dipende da voi
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'avete chiamato da nessuna parte, e stavate aspettando che d si calcolasse in qualche modo da solo.
E dovete decidere da soli cosa conta la funzione c()!
So come creare e chiamare la funzione nell'Expert Advisor, e la uso. La domanda riguarda le classi!
Non vi ho mostrato esattamente cosa dovrebbe contare. Vi ho mostrato come ottenere il valore calcolato - chiamate la funzione c();
Non l'hai chiamato da nessuna parte, e stavi aspettando che d si calcolasse in qualche modo da solo.
E cosa calcola la funzione c() dipende da voi
Questo è il punto, come chiamare una funzione all'interno di una classe, cioè, come privato: pubblico:, come passare dati a una classe e come ottenere il risultato dalla classe. Finora questo è tutto!
Ma anche la vostra funzione non calcola nulla.