Vikon: As impressões só podem ser inseridas dentro de uma função, mas eu não entendo como chamar esta função para fazer a impressão ou alerta funcionar. Você pode ajudar, fixando meu código com três variáveis simples? Faço tudo como descrito no artigo, mas o editor não aparece, ou falta algo, ou falta algo, em qualquer caso, a parede, então pedi ajuda. Obrigado pelo 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 qual método que retorna o resultado de se chamar a si mesmo?
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: Não está claro - o que você quer obter?
Eu tenho:
1. para passar dados do roteiro para a classe 2. Somar esses dados na classe 3. Passe a soma da classe para o roteiro 4. A partir do roteiro, imprimir a soma dos dados em um monitor ou impressora.
1. passar dados do roteiro para a classe 2. Somar esses dados na classe 3. Passe a soma da classe para o roteiro 4. a partir do roteiro, enviar a soma dos dados para um monitor ou impressora.
Eu não lhe mostrei exatamente o que deveria contar. Eu mostrei como obter o valor calculado - chamar a função c();
Você não chamou em nenhum lugar, e estava esperando o d para de alguma forma se calcular.
E o que a função c() calcula depende de você
Esse é o ponto, como chamar uma função dentro de uma classe, ou seja, como privada: pública:, como passar dados para uma classe e como obter o resultado da classe. Até agora é isso!
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
As impressões só podem ser inseridas dentro de uma função, mas eu não entendo como chamar esta função para fazer a impressão ou alerta funcionar. Você pode ajudar, fixando meu código com três variáveis simples? Faço tudo como descrito no artigo, mas o editor não aparece, ou falta algo, ou falta algo, em qualquer caso, a parede, então pedi ajuda. Obrigado pelo SKC.
Você está emitindo d com um alerta.
Onde é calculado?
//| 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);
}
//+------------------------------------------------------------------+
Dentro da classe, faça impressões a valores. E depois veja no registro o que será impresso ao executar o roteiro ;)
E assim também está tudo bem.
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);}
};
o roteiro
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
E assim também está tudo bem.
classe:
E assim também nada
//| 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));
}
//+------------------------------------------------------------------+
Não está claro - o que você quer obter?
Eu tenho:
1. para passar dados do roteiro para a classe
2. Somar esses dados na classe
3. Passe a soma da classe para o roteiro
4. A partir do roteiro, imprimir a soma dos dados em um monitor ou impressora.
Tudo!
Eu tenho:
1. passar dados do roteiro para a classe
2. Somar esses dados na classe
3. Passe a soma da classe para o roteiro
4. a partir do roteiro, enviar a soma dos dados para um monitor ou impressora.
Todos!
Veja o exemplo acima
Mas também não calcula a soma das variáveis a+b=d, enquanto eu preciso da soma de d!
Eu não lhe mostrei exatamente o que deveria contar. Eu mostrei como obter o valor calculado - chamar a função c();
Você não o chamou em nenhum lugar, e esperou por d para de alguma forma se calcular.
E o que a função c() calcula depende de você
Eu não lhe mostrei exatamente o que deveria contar. Eu mostrei como obter o valor calculado - chamar a função c();
Você não ligou para nenhum lugar, e estava esperando por d para de alguma forma se calcular.
E você deve decidir por si mesmo o que a função c() conta!
Eu sei como criar e chamar a função no Expert Advisor, e a utilizo. A questão é sobre as aulas!
Eu não lhe mostrei exatamente o que deveria contar. Eu mostrei como obter o valor calculado - chamar a função c();
Você não chamou em nenhum lugar, e estava esperando o d para de alguma forma se calcular.
E o que a função c() calcula depende de você
Esse é o ponto, como chamar uma função dentro de uma classe, ou seja, como privada: pública:, como passar dados para uma classe e como obter o resultado da classe. Até agora é isso!
Mas sua função também não calcula nada.