有没有办法声明一个可以同时使用int和double作为MQL4中的参数的函数?

时间:2016-12-25 20:24:07

标签: function types mql4 metatrader4 mql5

我有这两个功能:

void CheckOneConditionInt( int    &SettingsEditValueInt );
void CheckOneConditionDbl( double &SettingsEditValueDbl );

他们执行相同的操作,但其中一个用于 int 值,另一个用于 double 值。有没有办法让它成为一个可以将int / double作为参数的函数?例如:

void CheckOneCondition( void &SettingsEditValue );

PS:当然这个例子不起作用。

3 个答案:

答案 0 :(得分:0)

您是否听说过方法重载?它用于MQL4.5。 因此,如果传递int值,则调用Function( int value ),如果为real,则调用Function( double value )。如果应用于这两种类型的算法是相同的 - 也许你可以跳过Function( int value ),或者在整数函数中添加一个包装器,如:

Function( int &value ){
   double tmp = value/1.0;       
   Function( tmp );
   value = ( int ) Normalize( tmp, 0 );
}

答案 1 :(得分:0)

是和否。

虽然 - MQL4.56789 扩展已经引入了类(在其中有多个调用接口的方法(其中一个可能适用于 double int 的另一个,可能意味着), {{1 在其初始设计原则中是一种具有强类型的编译语言,这意味着 NO

设计决策规则

声音清晰的设计可以解决这个难题。在MQL4问题域中没有主要的理由存在模糊的双类型调用接口。

除了一些理论实验之外,总有一个确定性的确定性,即传递给函数的值是什么类型,因此无定形的双(多)类调用接口在MQL4上下文中是无用的学术主题。使用

后记

  

如果一个人确实寻求这样一种非常人为的极客来实现这种非确定性的不可知论,那么我们首先要定义一个明确的MQL4域用例,对于这种用例,参数类型的这种不确定性是必要的,其他的是不可避免的,可用,意思是。

答案 2 :(得分:0)

使用模板解决了这个问题:

template<typename T>
void CheckOneCondition( T &SettingsEditValue );

然后,我可以将其称为传递doubleint参数。