int for3(int a, int b, int c, void(*loop)()) {
for(int i=0; i<a; i++)
for(int j=0; j<b; j++)
for(int k=0; k<c; k++)
loop();
return4;
}
mql4は関数へのポインタでは動作しません。
ここで、私が見つけたものを紹介します。
typedefint(*MyFuncType)(int,int);
int addition (int a, int b)
{ return (a+b); }
int subtraction (int a, int b)
{ return (a-b); }
int operation (int x, int y, MyFuncType myfunc)
{
int g;
g = myfunc(x,y);
return (g);
}
intOnInit()
{
int m,n;
m = operation (7, 5, addition);
n = operation (20, m, subtraction);
Print(n);
return(INIT_FAILED); //just to close the expert
}
課題が何なのか、そこを掘っているのかわかりませんが、一見すると別のアプローチに見えますね。
つまり、関数の任意の部分(私の場合、必ずしも配列充填とは 限りません)を置き換えて、必要に応じてインスタンス化することができるのです。
なんだかダサいですね。この配列は、関数に渡された数値で埋め尽くされるか、この値にシャッフルされるのだろう...。しかし、それは...
ちょっとドギマギしますよね。一見するとコードを見て、こう思うでしょう。「配列には、関数に渡されたそれらの数値が入るのだろう」「その値にシャッフルされるのだろう」と......。しかし、それは...
感動しない、よし、パクリだ。
あるアルゴリズムの中に、特定のタスクを解決するためのサブアルゴリズムを入れ、いわば「調整」することができるのです。本来は、仮想関数の アナログです。主なものは、あなたが自分自身に尋ねたことであり、今あなたは理由を知らない))、あなたはフレームワークを持っており、その中にループを配置します。
このフレームワークにコードを追加して、全体が結果を返すようにしたかったのですが、私のフレームワークはvoidとして動作するので、それを理解するために試行錯誤しています。 異なる次元の配列で動作させる必要があります。
他の関数(ループ本体など)へのポインタを渡した関数を呼び 出す。
mql4は関数へのポインタでは動作しません。
ここで、私が見つけたものを紹介します。
だから、すべてのマクロが値を返せるわけではない、誰がわかる?
マクロから値を返すことは一切できません。マクロとは、あるコードの一部を別のコードに置き換えることです。
マクロから値を返すことは一切できません。マクロとは、あるコードの一部を別のコードに置き換えることです。
なるほど、わかりやすい正解をありがとうございました。
マクロは三項演算子?: やカンマ演算子 (µl にはない) に展開でき、そこから値を返すことができるのですが、そうではありません。
C++の三項演算子はより発展しており、条件が真であれば複数のアクションを実行することができますし、以前のようにmql4はメモリへのアクセスを閉じ、少なくとも10年間、開発者は大きな変更を加えず、注目すべき関数も作成していません(色とテキストで動作する関数があるだけで、他は何もありません - ただの愚かさです)。