如何通过引用 MQL4 将方法输出分配给变量
How to assign method output to variable by reference MQL4
我猜这个问题将适用于除 MQL4 之外的许多类似语言,例如 c++(我也忘记了如何使用),它需要您在通过引用传递时手动指定。
方法参考:
int[] previous = GetPrevious(i, ZigZagBuffer);
方法定义:
int GetPrevious[](int current, const double& buffer[])
{
int count = 0;
int result[];
// calculate count
ArrayResize(result,count);
// fill array
return result;
}
产生的编译错误是:
"Invalid Array Access"
据我了解,这是因为数组只能通过引用传递,但您必须明确声明您通过引用传递它。但是我越是查找通过引用传递的语法,就越能找到关于通过引用传递参数的文章。 (正如您在代码示例中看到的那样,我已经知道该怎么做。)
将方法的输出分配给变量的语法是什么?
万一重要,我只需要多次读取数组;声明后我不需要更改或重新分配它。
你不能return数组。您必须创建它并将其传递给函数,在函数内部填充,仅此而已。
OnTick(){
double array[]; //declaration of the array
fillArray(array,10); //passing array by ref, updating it there
Print(array[0]=0 && array[9]=9);//returns true
}
void fillArray(double &array[],int size){
ArrayResize(array,size);
for(int i=0;i<size;i++){array[i]=i;}
}
我猜这个问题将适用于除 MQL4 之外的许多类似语言,例如 c++(我也忘记了如何使用),它需要您在通过引用传递时手动指定。
方法参考:
int[] previous = GetPrevious(i, ZigZagBuffer);
方法定义:
int GetPrevious[](int current, const double& buffer[])
{
int count = 0;
int result[];
// calculate count
ArrayResize(result,count);
// fill array
return result;
}
产生的编译错误是:
"Invalid Array Access"
据我了解,这是因为数组只能通过引用传递,但您必须明确声明您通过引用传递它。但是我越是查找通过引用传递的语法,就越能找到关于通过引用传递参数的文章。 (正如您在代码示例中看到的那样,我已经知道该怎么做。)
将方法的输出分配给变量的语法是什么?
万一重要,我只需要多次读取数组;声明后我不需要更改或重新分配它。
你不能return数组。您必须创建它并将其传递给函数,在函数内部填充,仅此而已。
OnTick(){
double array[]; //declaration of the array
fillArray(array,10); //passing array by ref, updating it there
Print(array[0]=0 && array[9]=9);//returns true
}
void fillArray(double &array[],int size){
ArrayResize(array,size);
for(int i=0;i<size;i++){array[i]=i;}
}