新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 667

 
Roman Sharanov:

以下是在类文件中的内容

这个方法是否会返回一个错误?如果是,请在私人部分定义它。你可以做它的全部内容。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void)           const { return ::MathSqrt(this.m_var); }
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+

或者你可以把它拿出来。

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void) const;
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double newC::varSqrt(void) const
  {
   return ::MathSqrt(this.m_var);
  }
//+------------------------------------------------------------------+
 
neverness:

好吧,如果它是胡说八道,那也是经过经验检验的。

不仅仅是 "理论上的胡说八道"!!。

正是如此。

我在指标中安全地使用所有类型的数组。而作为一个缓冲区,和动态,和静态。

但一切都不适合你,经验告诉你,对不起,有些胡言乱语。

 
Artyom Trishkin:

这个方法是否会返回一个错误?如果是,请在私人部分定义它。你可以把它定义为一个整体。

而且你可以把它拿出来。

或者你可以简单地将类中的 私有成员 称为this.m_var,在类中引用。
 
neverness:

好吧,如果它是胡说八道,那也是经过经验检验的。

不仅仅是 "理论上的胡说八道"!!。

没有人阻止你在计算中使用动态数组。

但是!!!在计算过程中,处理器很忙,不会有向动态数组的写入。

所以在计算过程中进入动态数组的任何数据都会被自动忽略。(有时他们把保护,并把它们写进缓冲区)。

我希望这很清楚?

这就是为什么动态数组上的所有数据都分布在静态数组上,以便在处理器工作时不会丢失数据。

这就是为什么所有的计算都应该在静态数组中进行!!。

这是个激烈的废话,值得进入论坛的年鉴。

 
Artyom Trishkin:

这就是那个人。

我很容易在指标中使用任何类型的数组。而作为一个缓冲区,和动态,和静态。

但它对你不起作用,经验告诉你,对不起,有些胡说八道。

好的。

让我们进行一个实验。

让我们拿一个 与tick数据链接的动态数组,在这个数组上使用处理器几个小时。

看看我们在那段时间里给那个阵列写了些什么!?

你喜欢这个问题的表述吗?(当然,没有缓冲区)。

 
neverness:

好的。

我们来做个实验。

让我们拿一个 与tick数据相关的动态数组,并让该数组上的处理器工作几个小时。

看看我们在那段时间里给那个阵列写了些什么!?

你喜欢这个问题的表述吗?(当然,没有缓冲器)。

做到这一点。然后是这里的代码。

 
Artyom Trishkin:

这个方法是否会返回一个错误?如果是,请在私人部分定义它。你可以把它定义为一个整体。

而且你可以把它拿出来。

是的,应该是这样的,谢谢你。

 
Artyom Trishkin:

做到这一点。然后把代码放在这里。

当然了。

我们以后再看这个问题。

 

另一个问题。

我在一个班里有一个结构。

我怎样才能通过请求把它返回到与这个类一起工作的外部代码?

 
Roman Sharanov:

另一个问题。

我在一个班里有一个结构。

我怎样才能通过请求把它返回到与这个类一起工作的外部代码?

只有通过在全局变量可见度层面上描述结构本身,才能实现。

然后在类中声明该结构变量

在你的外部代码中,你可以声明同样的变量,但请记住,如果你在OnTick()中声明这样一个变量,每一次对OnTick()的调用都会启动一个结构构造器,即使你没有创建它--在MQL中,类和结构之间没有区别,我唯一记得的是,通过new创建的结构的参数的构造器不会被编译器传递。

所以...在经典的OOP中,你通常不会通过传递内部元素(类的字段)来超越类,一切通常都是通过对类的查询来实现的Get() ...Set()...嗯,这是一个品味的问题

SZ: ....使用继承,继承人有共同的类,看一下MT交付的类的源代码(include文件夹)。