在MQL5中一起学习和写作 - 页 33

 

我们需要将初始化移到初始化列表中。

只有静态积分常量可以在声明中被初始化(至少在C++中是这样,在MQL5中我还不知道 :) )

 
还有一个问题,就是最后一个问题。字符串的""和NULL不等同的原因是什么?
 
Interesting:

说到鸟类。

那么编译器将如何回答这个问题呢?并将回答以下问题 '=' - 非法使用赋值

编译员没有被吓倒 - '=' - 非法使用赋值。

我有个问题,如果程序员(这里是指我)在使用变量之前不对其进行初始化(他/她按照编译器的要求,在构造函数中省略了这个时刻),会发生什么?


在构造函数中初始化结构/类的成员的正确方法。

//Struct StrMQL4_Deal
struct StrMQL4_Deal
{
//----------------------------------------------------------------------------//
double TP;
double SL;
//----------------------------------------------------------------------------//
StrMQL4_Deal():TP(0),SL(0) { }
StrMQL4_Deal(double  tp,double  sl):TP(tp),SL(sl) { }
};
 
TheXpert:
还有一个问题,就是最后一个问题。字符串的""和NULL不等同的原因是什么?
NULL表示字符串未被分配,""表示字符串已被分配并且有一个值。
 
mql5:

在构造函数中正确初始化结构/类成员

是的,我在一年多以前就意识到了这一点,至少从2010年开始我就一直在这样做。
 
Interesting:
是的,我一年多前就想明白了,至少从2010年开始我就一直这样做了。

你不可能从2010年开始就做得正确,因为初始化列表是最近才引入的 :) 。

mql5:

NULL表示字符串未被分配,""表示字符串已被分配并且有一个值。

好吧,我换个方式说吧。向用户输入 "未分发 "的字符串状态有什么意义?它可以用在一些有用的地方,还是只是一个拐杖?
 
TheXpert:
你不可能从2010年开始就做得很好,因为初始化列表是最近才推出的 :) 。
是指在构造函数中。
 
TheXpert:

你不可能从2010年开始就做对了,因为初始化列表是最近才引入的:) 。


我的意思是在类的构造函数 和声明中进行初始化,因为

//----------------------------------------------------------------------------//
double TP;
double SL;
//----------------------------------------------------------------------------//
我记不清楚了,但我是在2010年初(第一季度,我也说不清楚;而且找资料来源也很繁琐)开始接触物件的。在此之前,我一直忙于图书馆和研究MQL5的基础知识(或者说,处理MQL5迁移问题)。
 
Rosh:
对数组中不同类型的数据做一个重载函数
哎呀,知道了。因此,不存在普遍的方法。这个问题的出现是因为重载的结果是相同的函数只有一个(!)区别--在函数头部,当你必须指定一个数组类型时。不太整齐,但我能做什么呢,我就这样留着吧。我希望有一个出路,就像《参考手册》中的那样。
 

像这样一个简单的脚本给我带来了奇怪的结果

void OnStart()
  {
   for(uchar u=120;u<136;u++)
     {
       switch(u>254)
        {
          case  true: Print(u,">254 - true");  break;
          case false: Print(u,">254 - false"); break;
        }
     }
  }

也许有人能解释一下原因是什么?当数字254被明确地转换为Uchar时,它就会如期工作。