错误、漏洞、问题 - 页 246

 
AlexSTAL:

这是一个类方法

https://www.mql5.com/ru/docs/standardlibrary/technicalindicators/cindicator

#include<Indicators\Indicator.mqh>

我明白了。显然,denkir 没有声明#include<Indicators\Indicator.mqh>。

但在《参考资料》中搜索,仍无法找到这一功能。

 
Urain:

那么,为什么编译器要发誓,这个调用的歧义是什么?


显然int 到long或反之亦然的类型 被转换,可能你只能按参数的数量或按未被自动转换的类型重新加载函数。

SZZ:只对long工作,你作为参数传递的int类型将自动转换为long。

 
IgorM:

显然int 到long或反之亦然的类型 被转换,可能你只能按参数的数量或按未被自动转换的类型重新加载函数。

SZY:只对long工作,你作为参数传递的int类型将自动转换为long。

同一首歌。

class CA
  {
public:
   void set(long i,long j,long n){Print("перегрузка long");};
   void set(long i,long j,int n){Print("перегрузка int");};
  };

void OnStart()
  {
//---
   CA a;
   int Int=3;
   long Long=4;
   a.set(1,2,Int);
   a.set(1,2,Long);
  }

关键是要让所有类型的函数重载都没有例外。

而如果一个类型不对应i和j的代码值,它就会产生一个警告。

 
Urain:

亲爱的开发者,请告诉我什么是对重载函数的模棱两可的调用(这就是编译器在发誓的内容)。

'set' - 对重载函数的模糊调用



是的,有一个错误,我们将在构建发布后修复它。

现在你可以用

class CA
  {
public:
   void set(int i,int j,long n){Print("перегрузка long");};
   void set(int i,int j,int n){Print("перегрузка int");};
  };

void OnStart()
  {
//---
   CA a;
   int Int=3;
   long Long=4;
   a.set((int)1,(int)2,Int);
   a.set((int)1,(int)2,Long);
  }
 
Urain:

不仅是int和long的重载没有问题,任何类型的重载问题都是一样的。

这只是编译器处理显式参数设置的方式不同而已。

对不起,我已经两个星期没有运行MT5了,因为我看到在过去三次更新后有很多愤怒的帖子,我甚至不想去寻找是否编译器不工作,或者也许我有错误的构建,而你有

像这样。

class CA
  {
public:
   void set(int i,int j,long n){Print("перегрузка long");};
   void set(int i,int j,double x){Print("перегрузка double");};
  };
  
void OnStart()
  {
//---
   CA a;
   int Int=3;
   double doubl=4;
   a.set(1,2,Int);
   a.set(1,2,doubl);
  }

它的作用,建立362。

 
mql5:

是的,这是个错误,我们会在发布后修复它。

在此期间,你可以使用这个

a.set((int)1,(int)2,Long);

谢谢你。我们会牢记这一点。
 
Yedelkin:

我明白了。显然,denkir 没有声明#include<Indicators\Indicator.mqh>。

但在《手册》中搜索,仍然没有找到这一功能。

这还不够!

这是一个外部类的方法!!!

 
AlexSTAL:

这还不够!

这是一个外部类方法!!!

好吧,我在这里不是专家,我更喜欢用手写一切。能否请你告诉denkir 该怎么做,一步一步来。
 

可能需要增加这样一个东西。

#include <Arrays\Array.mqh>
#include <Arrays\ArrayObj.mqh>

但我不需要 上述类别的对象。我需要的是一个简单的函数,用于我描述的基础类型字符串

 
denkir:

可能需要增加这样一个东西。

但我不需要 上述类别的对象。我需要一个简单的函数来处理基本类型的字符串,这是我所描述的。

但要进入类的方法,你必须声明相应的类,在我们的例子中,它是CIndicator (MQL5参考/ 标准库/ 用于处理指标的类/ 基本类/ CIndicator)。 难道不是这样吗?