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); } //+------------------------------------------------------------------+
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)); } //+------------------------------------------------------------------+
プリントは関数の中にしか挿入できないのですが、この関数を呼び出してプリントやアラートを動作させる方法がよくわかりません。私のコードを3つの単純な変数で修正することで助けてもらえますか?記事の通りにやっても、エディターが表示されないというか、何かが足りないというか、とにかく壁がないので、相談させていただきました。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);
}
//+------------------------------------------------------------------+
クラス内部で、valuesにPrintを行う。そして、スクリプトを実行したときに出力されるログを見てください ;)
というのも、またいいんです。
クラスとなります。
{
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);}
};
台本
ASD ar;
void OnStart()
{
ar.fg (3,5);
ar.sf ();
}
というのも、またいいんです。
クラスとなります。
そしてまた、何もない
//| 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));
}
//+------------------------------------------------------------------+
明確でない-何を得たいのか?
しています。
1. スクリプトからクラスへのデータの受け渡し
2.これらのデータをクラスで合計する
3. クラスからスクリプトに合計を渡す
4. スクリプトから、データの合計をモニターまたはプリンターに印刷する。
すべて!
しています。
1. スクリプトからクラスへのデータの受け渡し
2.これらのデータをクラスで合計する
3. クラスからスクリプトに合計を渡す
4.スクリプトから、データの合計をモニターやプリンターに出力する。
すべて!
上記の例を参照してください。
しかし、変数a+b=dの和が必要なのに、計算されません。
正確に数えるべきものを示していない。計算された値を取得する方法、つまりc()関数を呼び 出す方法を紹介しました。
どこにも呼び出さず、dがどうにかして勝手に計算してくれるのを待っていたんですね。
そして、c()関数が何を計算するかは、あなた次第です
正確に数えるべきものを示していない。計算された値を取得する方法、つまりc()関数を呼び 出す方法を紹介しました。
どこにも呼ばず、dがどうにかして勝手に計算してくれるのを待っていたんですね。
そして、c()関数が何をカウントしているかは、あなた自身が決めることです
Expert Advisorで関数を作成し、呼び出す方法は知っているし、使っている。授業についての質問です!
正確に数えるべきものを示していない。計算された値を取得する方法、つまりc()関数を呼び 出す方法を紹介しました。
どこにも呼ばず、dがどうにかして勝手に計算してくれるのを待っていたんですね。
そして、c()関数が何を計算するかは、あなた次第です
それは、クラスの中でどのように関数を呼び出すか、すなわち、private:public:、クラスにどのようにデータを渡し、どのようにクラスから結果を得るか、という点です。今のところこれです!
しかし、あなたの関数も何も計算しません。