簡體   English   中英

定義MQL4“靜態類方法的#import”的正確方法是什么?

[英]What is the correct way to define MQL4 “#import of static class methods”?

我想要實現的是在單獨的文件中定義類(使用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 ,可以導入)

“新” -MQL4語法正在發展

用於指定目的

類定義語法應足夠,在實例化一個類時,可以在實例對象上調用其public方法。

編譯時語法:

導出沒有class繼承的函數(將整個class 容器合並在一起)不適合OOP概念。 這在OnInit()調用中清晰可見,您的代碼嘗試調用一個函數 ,該函數實際上是當前基於類的對象method ,而尚未實例化該method應在其上的任何object要執行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()
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM