我有 3 个相同类型的单独结构数组,例如:
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中使用它的pool参数完成的事情,但我的池完全不同。
但是上面的代码失败了,有很多没有任何意义的错误,我已经在评论中包含了其中的一些。
什么是正确的方法?
我的目标是分配一个指向结构数组的指针,这样我就可以遍历选定的数组。