在 MQL4 中,有没有什么方法可以声明一个可以接受 int 和 double 作为参数的函数?

Is there any way to declare a function that can take both an int and a double as it's argument in MQL4?

我有这两个功能:

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

它们做同样的事情,但一个用于 int 值,另一个用于 double 值。有没有办法让它成为一个可以将 int/double 作为参数的函数?例如:

void CheckOneCondition( void &SettingsEditValue );

PS: 这个例子当然不行。

你听说过方法重载吗?它用于 MQL4.5。 所以,如果你传递 int 值,那么 Function( int value ) 被调用,如果是真实的 - 那么 Function( double value ) 被调用。如果应用于两种类型的算法相同 - 也许您可以跳过 Function( int value ),或在整数函数内添加一个包装器,例如:

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

是也不是

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


设计决策规则

一个健全而清晰的设计可以解决这个难题。在 MQL4 问题域中没有出现模棱两可的双类型调用接口的主要原因。

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


结语

If one indeed seeks for such an extremely artificial geekiness to achieve such non-deterministic agnosticism, let's first define a clear MQL4-domain use-case, for which such uncertaintiness of parameter type is both necessary and un-avoidable by other, available, means.

问题已通过模板解决:

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

然后我可以通过 doubleint 参数调用它。