【发布时间】:2023-04-03 04:04:01
【问题描述】:
我有 3 个相同类型的 struct 独立数组,例如:
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 中的 pool 参数类似的东西,但我的池完全不同。
但是上面的代码失败了,有很多没有任何意义的错误,我已经在 cmets 中包含了一些错误。
什么是正确的方法?
我的目标是分配一个指向struct数组的指针,这样我就可以遍历选中的数组了。
【问题讨论】:
-
[out-of-record ] 你最近的问题似乎确实是对 New-
MQL4/5语法内部边界的创造性折磨测试。祝狩猎顺利!总是鼓舞人心,伙计 +1!
标签: pointers struct compiler-errors mql5