错误、漏洞、问题 - 页 49

 

为什么编译器看不到int和color的区别。

   void              CreateLabel(int x,int y,color COLOR);   
   void              CreateLabel(int x,int y,int n);

我重新定义一个功能,它就骂我(说我小心翼翼地把踏板弄混)。

'CreateLabel' - ambiguous call to overloaded function with the same parameters
如果有默认参数就好了,但没有歧义,只要定义好所传参数的类型就可以了。
 
Urain:

为什么编译器看不到int和color的区别。

我覆盖了一个功能,它发誓(说小心把踏板弄混)。

如果有默认参数就好了,但没有歧义,只要定义好所传参数的类型就可以了。
在这种情况下,编译器在抱怨你创建了两个同名的函数,而传递的参数与此无关。
 
sergey1294:
在这种情况下,编译器会抱怨说你创建了两个同名的函数,而你传递的参数与此无关。

在这种情况下,请阅读 "重载 "一词的含义。

譬如说,在深圳,还有"函数重载"。

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Основы языка / Функции / Перегрузка функций - Документация по MQL5
 
Urain:

向写作兄弟会提出一个问题,不是一个错误或毛病,而是一个问题,谁能建议什么...

我想得到类里面的指针的名字,但它不起作用。

一般来说,事情的本质是我想让图形对象的 字符串名称被自动分配。

我想为它自动获得一个字符串名称。

当从类方法安装图形对象时,应根据光标自动分配名称。

我还不知道怎么做,我想我们可以从头开始做。


在理论上,有两种主要的方法来自动命名一个对象(在实现时,有各种不同的变化)。

1.名称的生成是基于一个编号的列表

一个单独的类为对象做命名,它维护 "分子"(可以是所有对象,也可以是特定的一组对象)。

在这种情况下,名称的形成基于(最好是):对象类型、符号名称(货币对)、TF的文本符号和对象的序列号(取自分子)。

在这种情况下,根据不同的实现,你可以跟踪图表上的对象的存在,也可以不跟踪。

2.该名称是在对象创建的日期和时间的基础上形成的。

这种方法下的名称可以在以下基础上形成:对象类型、符号名称、文本符号TF和键(在日期和时间基础上形成)。

PS

在第一种变体中(在我看来),在类中实现对象管理的全周期(创建、修改和删除)会更合理......

 
Urain:

在这种情况下,请阅读 "超载 "是什么意思。

ZS 好比"函数重载"。

我不知道那是可能的。
 
sergey1294:
不知道这有可能。

多态性和函数重载是基本的OOP原则,应该存在于任何自尊的语言中。

多态性

多态性是一种现象,当一个具有相同名称的函数(方法)对应于不同的程序代码(多态性代码)时,取决于在调用该方法时使用的是哪一个类对象。多态性是通过改变祖先类方法在后代类中的实现,并强制保留方法签名 来保证的。这确保了父类的接口 保持不变,并允许在不同类的代码中链接一个方法名称--给定名称的方法取自调用该类的对象。这种机制被称为动态(或后期)绑定--与静态(早期)绑定相反,后者是在编译时完成的。

函数重载

程序和函数的重载 - 使用同名子程序的能力:编程语言中的程序或函数。


例子来自贸易类的标准库,类 CAccountInfo。

double MarginCheck(const string symbol,ENUM_POSITION_TYPE trade_operation,double volume) const;
double MarginCheck(const string symbol,ENUM_ORDER_TYPE trade_operation,double volume) const;
 
ddd06:

我花了很长时间与尊敬的MetaQuotes交谈,向他们证明他们有一个故障,他们告诉我没有故障。

然而,我坚持自己的观点,他们建议我去问社区。

因此,我们有一个指标和一个获取该指标值的专家顾问。

从2010年7月1日到2010年7月2日在М1上启动欧元兑美元的测试器

我们看一下日志,发现一个缓冲区的值发生了变化,而另一个没有变化。

这持续了一个小时,然后第二个缓冲区是活的,但如果你看一下指标的值,它并不重合。

我甚至试过更换账户并重新灌入历史记录,但这并没有帮助。

这里有一个链接,我的终端在rar 90mbhttp://dl.dropbox.com/u/6290215/MetaTrader%205%201111.rar, 一切都在那里设置好了。

以及附件中与顾问的指标

你提交的代码有错误。自然,是你的代码发出了错误的信息。你无视我们关于纠正错误的意见,每次都提供一个新的代码,每次都有错误。
 
Urain:

为什么编译器看不到int和color的区别。

我覆盖了一个功能,它发誓(说小心把踏板弄混)。

好的,会有默认的参数,但没有歧义,只要定义好所传参数的类型就可以了。
真的有一个问题--我们会调查的。
 
Urain, 谢谢你的留言。该错误已被纠正。
 
stringo:
你提供的代码有错误。自然,这是你的代码,给出了错误的信息。同时,你无视我们关于修正错误的意见,每次都提供一个新的代码,每次都有错误。

然而,如果你告诉我,不应该有同步,我们应该把它建立在代码中。

相反,你固执地说一切都符合。

TimeToString(time[0],TIME_DATE|TIME_MINUTES)," buf1-",buf1[1]," buf2-",buf2[1] )而不是TimeToString(time[1],TIME_DATE|TIME_MINUTES)," buf1-",buf1[1]," buf2-",buf2[1])。

这当然是一个错误,但它并不影响观点。

我将推迟添加新的指标,以检查我的错误程度。

也就是说,你刚才说一切都很吻合,你已经纠正了专家顾问的代码。但事实上,没有任何东西是重合的,我们应该修正指标的代码(以便将同步性融入其中)。