pointers - 如何在MQL中分配指向结构数组的指针?

标签 pointers struct compiler-errors mql5

我有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中使用池参数进行的操作类似,但是我的池完全不同。

但是,上面的代码失败,并带有很多毫无意义的错误,我在注释中包括了其中一些。

什么是正确的方法?

我的目标是为结构数组分配一个指针,这样我就可以遍历选定的数组。

最佳答案

在我看来,您无法在MQL5中做到这一点,您只能将动态类的指针用于类,对于结构而言,它是静态指针,与数组或基元相同,而MqlRates是一种结构而不是类。 -创建具有Mql结构数组的类。

关于pointers - 如何在MQL中分配指向结构数组的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41706161/

相关文章:

指向匿名字符数组的字符指针

c - 使用 argv[] 构建一个字符转换器程序

c - 什么时候在 c 中使用 typedef?

c++ - 无法编译(未声明且预期的主表达式)

java - 为什么缺席返回类型没有编译错误

c++ - 在 Xcode 4 中使用和引用多个 cpp 文件

c++ - 通过单独的类将数组指针传输到 CUDA 内存中

c - &array == array,那么结构呢?

matlab - 动态访问 Matlab 中的嵌套字段

c# - 禁用designer.cs中的自动更改