错误、漏洞、问题 - 页 1954

[删除]  
Andrey Barinov:
把路标拿回来。
谢谢你的主意。我已经把他们忘得一干二净了。
 
Alexey Kozitsyn:
谢谢你的主意。我已经完全忘记了他们。

这很奇怪。我从你的代码中得到一个编译错误

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

关于GetBMember函数的描述(用简单的英语说是创建一个副本)。它是最新版本的编译器吗?

当这个问题通过添加一个拷贝构造函数B来解决时,你就可以从GetBMember方法中返回const B。

然后,编译器会对试图对返回的变量进行Reset的行为进行发誓。

'Reset' - call non-const method for constant object

[删除]  
Stanislav Korotky:

这很奇怪。我从你的代码中得到一个编译错误

object of 'B' cannot be returned, copy constructor 'B::B(const B &)' not found

关于GetBMember函数的描述。它是最新版本的编译器吗?

当这个问题通过添加一个拷贝构造函数B来解决时,你就可以从GetBMember方法中返回const B。

然后,编译器会对试图对返回的变量进行Reset的行为进行发誓。

'Reset' - call non-const method for constant object

这段代码只是在浏览器中写的一个例子。我只是想知道为什么编译器没有报告什么。但我已经想通了。

而且,我的例子中根本就没有构造函数:)

 

你好!2017.08.03_18:45 GMT+3。我写了一个OOP文件 SignalIchimoku.mqh .但当我需要在一个单独的函数中对LongCondition()和ShortCondition()进行简单的计算时,函数写好了,编译器给出了0错误,0警告。但这个函数没有工作,没有进行任何计算。该程序没有打开交易。我检查了一下:我把Print()的变量值插入到函数中。这个函数类似于SignalStoch.mqh中的StateStoch(int ind)、ExtStateStoch(int ind)和CompareMaps()函数,是标准库 的一个标准文件。在标准文件中一切正常,但对我来说却不起作用。为什么?又是 "简单规则 "吗?谁知道呢 -- 告诉我。如果你需要详细资料或有任何问题,--请写信。18:59 GMT+3。

附加的文件:
 

CCanvas。在FillCircle函数的实现中,有一个小错误。从这个GIF动画中可以看出,它窄了一个像素

另外,该算法的构造非常不合理,因为大约30%的点被画了两次。这一点很容易解决,只要移动两行代码就可以了,速度平均提高30%。
这里是FillCircle的原始版本。

void CCanvas::FillCircle(int x,int y,int r,const uint clr)
  {
   int f   =1-r;
   int dd_x=1;
   int dd_y=-2*r;
   int dx  =0;
   int dy  =r;
//--- draw
   while(dy>=dx)
     {
      LineHorizontal(x-dx,x+dx,y-dy,clr);
      LineHorizontal(x-dx,x+dx,y+dy,clr);
      LineHorizontal(x-dy,x+dy,y-dx,clr);
      LineHorizontal(x-dy,x+dy,y+dx,clr);
      //---
      if(f>=0)
        {
         dy--;
         dd_y+=2;
         f+=dd_y;
        }
      dx++;
      dd_x+=2;
      f+=dd_x;
     }
  }

这里是固定的版本。

void CCanvas::FillCircle(int x,int y,int r,const uint clr)
  {
   int f   =1-r;
   int dd_x=1;
   int dd_y=-2*r;
   int dx  =0;
   int dy  =r;
//--- draw
   while(dy>=dx)
     {
      LineHorizontal(x-dy-1,x+dy,y-dx,clr);
      LineHorizontal(x-dy-1,x+dy,y+dx,clr);
      //---
      if(f>=0)
        {
         LineHorizontal(x-dx-1,x+dx,y-dy,clr);
         LineHorizontal(x-dx-1,x+dx,y+dy,clr);
         dy--;
         dd_y+=2;
         f+=dd_y;
        }
      dx++;
      dd_x+=2;
      f+=dd_x;
     }
  }
 

关于挂单被删除(资金不足)。

专家顾问的有效工作,是指在其操作过程中没有发生错误。

挂单被删除(资金不足)是一个错误。

问题是,从理论上讲,如果开单时出现滑点,就不可能追踪到开单的必要保证金。

例如,我们已经确定并计算出有足够的资金在1.500开设挂单卖出止损单。(在1.499时就没有了)。

目前的价格是1.501。

下一个刻度,我们的价格是1.499。

试图打开一个订单并出现错误。

因此,我们初步考虑了不能100%避免这种错误的情况。

还是我错过了什么?

 

我不知道如何从文件夹Experts的一个子目录中提取mqh文件。

如何从One文件夹中提取mqh文件到Two文件夹?

 
Vladimir Pastushak:

我不知道如何从文件夹Experts的一个子目录中提取mqh文件。

如何从One文件夹中提取mqh文件到Two文件夹?


找到的解决方案。如果你想连接注射器的文件位于Test/One,而注射器位于Test/Two,那么......。

它是这样的。

#include "..\Two\name.mqh""
结果是:......--从 "一 "到 "测试 "和 "二".mqh--从 "测试 "到 "二 "并选择文件名.mqh
 
简介中没有显示 "我的信息"。

以及其他人的资料中
 
Vladimir Pastushak:

找到的解决方案。如果你想连接的文件在Test/One中,而一个inluder在Test/Two中,那么...。

像这样。

结果是:......--从 "一 "到 "测试",再到 "二".mqh--从 "测试 "到 "二",选择文件名.mqh。

有这样的构造。

#include "..\..\Two\name.mqh"