我有这两个功能:
void CheckOneConditionInt( int &SettingsEditValueInt );
void CheckOneConditionDbl( double &SettingsEditValueDbl );
他们执行相同的操作,但其中一个用于 int
值,另一个用于 double
值。有没有办法让它成为一个可以将int / double作为参数的函数?例如:
void CheckOneCondition( void &SettingsEditValue );
PS:当然这个例子不起作用。
答案 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 );
然后,我可以将其称为传递double
或int
参数。