错误、漏洞、问题 - 页 2420

 

为什么mql5会移动语义?没有必要进行这样的性能优化,尤其是因为它是一个虚拟机。你还需要它做什么?)

就其本身而言,mql5与C++以及C++98 有很大的不同,与C++11/14/17更是如此,但其能力现在完全涵盖了你创建EA 所需要的东西。

 
Andrey Pogoreltsev:

但它的能力现在完全涵盖了你创建EA 所需要的东西。

他们甚至在6年前的MQL4中就涵盖了这些必要条件,如果你知道当时的语言水平是什么的话。 我们用它写过EA,有些人还在用那种古老的风格写代码。 所以,一切都是相对的。

引进它的其他目的是什么?)

这个问题已经在这个主题的最后几页中讨论过了。
 

它在这里给出了一个错误。

void OnStart()
  {
   struct sA
     {
      int               ii[51];
     };
   struct sB
     {
      string            name;
      sA                distrib;
     };
   sB f;
  }
'distrib' - struct undefined    Test2.mq5       21      25

它并不是这样的。

void OnStart()
  {
   struct sA
     {
      int               ii[51];
     };
   struct sB
     {
      //string            name;
      sA                distrib;
     };
   sB f;
  }

这也行不通。

struct sA
  {
   int               ii[51];
  };
struct sB
  {
   string            name;
   sA                distrib;
  };

void OnStart()
  {
   sB f;
  }

附上一个重现该错误的脚本,一个空的脚本,其中有几行代码如上。

附加的文件:
Test2.mq5  1 kb
 

嗯,这一点也说不通。

class A
  {
   class B
     {
      class C
        {
         class D
           {
            class E
              {
               bool              YES;
              };
           };
        };
     };
  };
void OnStart()
  {
   E g;
  }

E类不值得如此受欢迎。

它的编译没有任何错误。

 
这是一个编译器错误吗?
class A
{
private:
  int i;
};

class B : public A
{
public:  
  void f( int i ) {} // declaration of 'i' hides member declaration at line 4
};
[删除]  
fxsaber:
这是一个编译器错误吗?
会不会是一个格式化的人烦人地唠叨着废话,分散了对严肃事务的注意力?
 
fxsaber:
这是一个编译器错误吗?
同样的事情
 
Vict:
也许是一个恼人的形式主义者在说废话,让你从手头的严肃事务中分心?

当你在他的热情中,你会告诉我吗?

 
fxsaber:
这是一个编译器错误吗?

这有点符合逻辑。

一个公共函数中的输入参数怎么可能是私有的。利益冲突。

如果这个私有参数要在这个函数里面使用,它不需要被声明为输入,因为它已经存在。

如果它要成为另一个变量,当然在函数中会与现有的私有变量发生名称冲突,所以需要用不同的名称来调用。


ZS 事实证明,如果是i公共或私人,这并不重要。这是一个微不足道的名称冲突。在函数f中,将不确定i是什么--输入参数还是父类的全局变量

 
Nikolai Semko:

该问题暗示我们不能因为隐私而访问该成员,但编译器仍然显示名称冲突。

正如我所写的,加号的行为完全一样,即在编译器中没有错误,一切都很好。