Я 3 отдельные массивы struct одного и того же типа, например:Как назначить указатель на массив структуры в MQL?
MqlTradeRequest orders1[];
MqlTradeRequest orders2[];
MqlTradeRequest orders3[];
Похожие, как описано for C in here.
Предполагая, что эти массивы позже будут заполнены, как я могу создать общий указатель на один из них?
Так что я могу сделать что-то вроде: 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 с бассейном аргументу , но мои бассейны совершенно разные.
Однако выше кода не удается с большим количеством ошибок, которые не имеют никакого смысла, я включил некоторые из них в комментарии.
Каким будет правильный подход?
Моя цель - назначить указатель на массив структуры, чтобы я мог пройти через выбранный массив.
[out-of-record] Ваши недавние проблемы кажутся действительно творческим испытанием на пытку внутренних границ синтаксиса * New * -'MQL4/5'. Удачи на охоте! Всегда вдохновляющий толпа, человек +1! – user3666197