У меня есть 3 отдельных массива struct одного типа, для пример:
MqlTradeRequest orders1[];
MqlTradeRequest orders2[];
MqlTradeRequest orders3[];
Аналогично описанному для C здесь.
Предполагая, что эти массивы будут заполнены позже, как я могу создать общий указатель на один из них?
Так что я могу сделать что-то вроде: orders_ptr = &orders1
или *orders_ptr = orders1
.
Вот мой нерабочий код:
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);
}
};
А вот еще попытка:
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 с его пулом em> аргумент, но мои пулы совершенно другие.
Однако приведенный выше код дает сбой с множеством ошибок, которые не имеют никакого смысла, я включил некоторые из них в комментарии.
Какой подход будет правильным?
Моя цель - назначить указатель на массив структур, чтобы я мог пройти через выбранный массив.
MQL4/5
синтаксиса. Удачи на охоте! Всегда вдохновляю толпу, чувак +1! - person user3666197   schedule 18.01.2017