我想要实现的是在单独的文件中定义类(使用 MQL4
)并使用主代码中这些类的方法。基本上导入静态类成员函数。
class example{ // ____ in example.mq4
public:
static void myfunction(void) export { .. do something .. }
}
class example{ // ____ in example.mqh
public:
static void myfunction(void);
}
#include <example.mqh> // ____ in main.mq4:
#import "example.ex4"
void example::myfunction(void);
#import
使用该函数时导致编译错误,如下所示:
void OnInit(){
example::myfunction();
}
编译错误:
myfunction: function must have a body
(注意example.mq4
编译为example.ex4
,可以导入确定)
答案 0 :(得分:0)
用于指定目的,
类定义语法应该足够,在实例化类时,可以在实例对象上调用 public
方法。
导出一个没有它的函数 class
- 继承(将整个class
容器整合在一起)不符合OOP概念。这在OnInit()
调用中清晰可见,您的代码尝试调用函数,实际上是基于类的对象 - method
暂时还没有实例化 object
,method
应该执行anObjectINSTANCE.aClassOrInstanceMETHOD()
。
所以,只需#include
class example{ // ____ in example.mqh
public:
static void myfunction() { .. do something; }
}
// ---------------------------- // ____ in main.mq4
#property strict // "new"-MQL4
#include <example.mqh> // include
example anObject; // create a globally visible instance
// ----------------------------
void OnInit(){
anObject.myfunction(); // request <anObject> to perform <myfunction> method on self
return( EMPTY ); // "new"-MQL4 insists on return even on void fun()
}