1

我有这两个功能:

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

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

void CheckOneCondition( void &SettingsEditValue );

PS:这个例子当然行不通。

4

3 回答 3

0

该问题通过使用模板解决:

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

然后我可以称它为传递doubleint参数。

于 2016-12-28T21:48:56.990 回答
0

你听说过方法重载吗?它用于 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 );
}
于 2016-12-26T08:42:09.433 回答
0

是和否。

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


设计决策规则

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

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


结语

如果有人确实寻求这种极其人为的极客来实现这种非确定性的不可知论,让我们首先定义一个明确的 MQL4 域用例,对于该用例,参数类型的这种不确定性是必要的,并且是其他可用手段无法避免的.

于 2016-12-26T10:26:35.210 回答