2017-01-17 22 views
1

Iは、例えば、同じタイプのstructの3つの別々の配列をしました:for C in hereに記載されるようにMQLでstructの配列にポインタを割り当てる方法は?

MqlTradeRequest orders1[]; 
MqlTradeRequest orders2[]; 
MqlTradeRequest orders3[]; 

同様。

これらの配列が後で作成されると仮定して、どのようにこれらの配列の共通ポインタを作成できますか? orders_ptr = &orders1または*orders_ptr = orders1


だから私のような何かを行うことができます。ここで

は私の非稼働コードです:別のプールで

MqlTradeRequest *orders_ptr; // Error: Invalid operation use. 
    switch (_pool) { 
    case POOL1: *orders_ptr = GetPointer(orders1); break; // Error: Object pointer expected. 
    case POOL2: *orders_ptr = GetPointer(orders2); break; // Error: Object pointer expected. 
    case POOL3: *orders_ptr = GetPointer(orders2); break; // Error: Object pointer expected. 
    } 

それはそのプール引数でOrderSelectで行われていますように私は似たような意味:

MqlTradeRequest orders1[]; 
MqlTradeRequest orders2[]; 
MqlTradeRequest orders3[]; 

enum ORDERS_POOL { 
    POOL1, 
    POOL2, 
    POOL3 
}; 

void start(ORDERS_POOL _pool = POOL1) { 
    MqlTradeRequest (*orders_ptr)[]; // Error: Invalid operation use. 
    switch (_pool) { 
    case POOL1: orders_ptr = &orders1; break; // Error: Invalid array access, class type expected. 
    case POOL2: orders_ptr = &orders2; break; // Error: Invalid array access, class type expected. 
    case POOL3: orders_ptr = &orders2; break; // Error: Invalid array access, class type expected. 
    } 
    for (int i = 0; i < ArraySize(orders_ptr); i++) { 
    Print(orders_ptr[i].order); 
    } 
}; 

そしてここでもう一つの試みがありますしかし、私のプールは完全に異なっています。

しかし、上記のコードは多くのエラーでうまくいかず、意味をなさないので、私はコメントのいくつかをコメントに含めました。

正しいアプローチは何ですか?

私の目標は、構造体の配列にポインタを代入して、選択した配列をトラバースすることです。

+1

[out-of-record]あなたの最近の問題は、実際に* New * -'MQL4/5'構文境界の創造的な拷問テストであるようです。狩りに幸運!いつも群衆にインスピレーションを与え、男+1! – user3666197

答えて

1

MQL5ではこれを行うことはできません。
動的オブジェクトのポインタは、クラスのようにしか使用できません。構造体の場合、配列またはプリミティブと同じ静的ポインタです。MqlRatesは、クラスではない構造体です。
あなたが本当にそのような魔法を必要とするなら、Mql構造の配列を持つクラスを作成してください。

0

MQLサポートチームの返信では、struct型オブジェクトへのポインタを作成することはできず、また、ポインタを配列に取得することもできません。

代わりに、クラスオブジェクト(例:CTradeReqArray)にMqlTradeRequest配列をラップすることをお勧めします。Daniel's answerのように、目的の配列を選択してCTradeReqArrayオブジェクトへのポインタを取得することができます。

関連する問題