全局变量被函数调用不了的问题

 

我在主程序文件的开头定义并赋值了两个变量,一个是整型,一个是时间型。随后我在.mqh文件里写了个带两个形式参数(整型和时间型)的函数。然后我在主程序调用这个函数并用开头的两个变量作为函数的参数。问题来了:

1、函数中对两个全局变量的赋值进行了修改,但打印出的结果并没有修改,还是主程序开头的赋值。这是为什么????

2、我又尝试把mqh文件里的这个函数两个形参去掉,也就是不让函数带参数了,直接在函数体内部使用主程序开头的两个全局变量,但调试报错,提示没有定义和赋值这两个参数。奇怪,难道没法直接调用全局变量吗?我的函数体里并没有定义跟主程序开头两个变量一样名字的局部变量啊?这是为什么??????

 

因为你的全局变量没有和你的类文件(.mqh)关联在一起,用类文件就无法调用和改变那两个变量,这两个文件只是主程序包含了类。单方向的,无法逆向调用。

可以考虑用静态函数static的方法定义在类里面去用,这样就不用定义全局变量,但是也要看具体你怎么用

如果你是想通过主函数去input然后给mql使用,那么后续无论是打印还是赋值,在mql里面操作就好,把主逻辑都写在mql里面,就可以调用了。