MQL5中的OOP问题 - 页 77

 
Vladimir Simakov:

同意现在更复杂了))))。

我礼貌地什么也没说,虽然我想问一个例子,不是输出到日志,而是输出到文件--他们的日志更实用,更有意义,在终端的日志中了解终端输出什么,什么EA--非常不方便。

 

我们什么时候开始做MQ还没有的硬链接?

 

标准专家,这里有一个问题。

虽然ME是一个乱七八糟的{}高亮,但在VS2019中把MQL代码复制到一个 空的C++项目 中,为什么VS会对此发誓

struct SHash
{
  ulong hash[2];
  bool operator==(const SHash& value)const { return(this. hash[0] == value.hash[0] && this. hash[1] == value.hash[1]); }
};

写道:"表达式必须是类别型的"

 
Igor Makanu:

标准专家,这里有一个问题。

虽然ME是一个乱七八糟的{}高亮,但在VS2019中把MQL代码复制到一个空的C++项目中,为什么VS会对此发誓

写道:"表达式必须有类的类型"

而在C++中这是一个指针...

要么覆盖*,要么明确指定->

 
Maxim Kuznetsov:

而在C++中这是一个指针...

要么覆盖*,要么明确指定->

我已经习惯于把这个放在这里的所有文章中,一般不写在任何地方,这样简单的结构里面根本没有选择......没办法,我觉得

 
Igor Makanu:

标准专家,这里有一个问题。

虽然ME是一个乱七八糟的{}高亮,但在VS2019中把MQL代码复制到一个空的C++项目中,为什么VS会对此发誓

写道:"表达式必须是类别型的"

这就是它应该是这样的。

struct SHash
{
        long hash[2];
        bool operator==(const SHash& value)const { return(this->hash[0] == value.hash[0] && this->hash[1] == value.hash[1]); }
};
 
Andrei Novichkov:

这就是它应该是这样的。

我需要它在MQL中,我下载了VS作为编辑器,来浏览代码,看看我能看到什么 ))

但在MQL的这样一个结构中--写这个没有意义?

 
Igor Makanu:

我需要它在MQL中,我下载了VS作为编辑器,浏览代码,看看我能看到什么))))。

但在MQL的这样一个结构中--写这个没有意义?

我需要检查,但乍一看,这种表达方式不仅在MQL中没有意义)
 
Igor Makanu:

一遍又一遍地写--我有时间(因为我不看电视 )))- 收集关于语言特性的技术信息,OOP...凡是有问题的地方--论坛都很活跃,我利用这个机会 "百分百";)

问题是--如果我可以直接从MQL中调用我的夏普代码,那么从C#转移到MQL有什么意义,除非我想把它放到Market中或在MQ-cloud中进行优化。

毕竟从C#到MQL的过渡,我想是非常痛苦的)在习惯了与对象一起工作 的便利和轻松之后,你不必担心它们的删除,在这里你得到的是相反的。总之,一个成熟的OOP需要为被引用的对象提供一个引用计数器。 在C++中,它是通过一个包装器--智能指针来解决的。 在MQL中,智能指针的使用是非常麻烦的,因为缺少操作符->,还有其他问题。

因此,如果从C++转换,一切或多或少都是清楚的:你会得到很多不便和限制,但总的来说是类似的东西。但当我从夏普转过来时,我没有看到任何好处。只有缺点 )

 
Igor Makanu:

我有一个诀窍,就是把这个粘在这里的所有文章中,一般来说不写在任何地方,这样简单的设计里面根本没有选择......庞士元,IMHO

一般来说,很多有争议的风格是强加在这里的))))。同样的

return (retValue);

为什么要用托架?这不是JS,虽然你也不一定要在那里做。

如果你真的需要这个,并且它将是正确的,那么就用这个宏置换代替

#ifdef __cplusplus
   #define THIS *this
#else
   #define THIS this
#endif