Ошибки, баги, вопросы - страница 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. Формирование имени ведется на основе нумерованного списка

Назначением имени для объекта занимается отдельный класс, при этом он и ведет "нумераторы" (которые могут быть либо по всем объектам, либо по отдельной группе объектов).

По идеи имя в таком случае формируется на основе (желательно): типа объекта, имени символа (валютой пары), текстового обозначения ТФ и порядкового номера объекта (взятого из нумератора).

При этом в зависимости от реализации можно отслеживать наличие объекта на графике, а можно нет.

2. Формирование имени ведется на основании даты и времени создания объекта.

Имя при таком подходе может формироваться на основе: типа объекта, имени символа, текстового обозначения ТФ и ключа (сформированного на основе даты и времени).

PS

В первом варианте (на мой взгляд) будет разумней реализовать в классе и полный цикл управления объектами (создание, модификацию и удаление)...

 
Urain:

В таком случае прочтите что означает слово "перегрузка".

ЗЫ ну заодно и "перегрузка функций".

 не знал что такое возможно.
 
sergey1294:
 не знал что такое возможно.

Полиморфизм и перегрузка функций это основы ООП которые должны присутстовать в любом уважающем себя языке

Полиморфизм 

Полиморфизмом называют явление, при котором функции (методу) с одним и тем же именем соответствует разный программный код (полиморфный код) в зависимости от того, объект какого класса используется при вызове данного метода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции.

Перегрузка функций

Перегрузка процедур и функций - возможность использования одноимённых подпрограмм: процедур или функций в языках программирования.


Пример из стандартной библиотеки торговых классов, класс 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 и доказывал им, что у них глюк, а они мне, что глюка нет.

Однако я остался при своем, а они мне посоветовали спросить у сообщества.

 

Итак есть индюк и советник который берет значения индюка.

Запускаем тестер по EURUSD с 01.07.2010 по 02.07.2010 периуд М1

Смотрим лог и видим что значения одного буфера меняются, а другого нет.

Это продолжается целый час, потом второй буфер оживает, но если посмотреть на значения индюка с ним он не совпадает.

 

Я даже попробовал сменить счет и перекачать историю, но это не помогло.

Вот ссылка на мой терминал в rar 90мбhttp://dl.dropbox.com/u/6290215/MetaTrader%205%201111.rar, там все настроенно

Ну и индикатор с советником во вложении

Вы представили код с ошибкой. Естественно, этот Ваш код и выдаёт ошибочную информацию. При этом Вы проигнорировали наши замечания по исправлению ошибки, каждый раз предлагая всё новый код и каждый раз с ошибкой.
 
Urain:

Почему компилер не видит разницы между int и color.

переопределяю функцию, ругается (говорит осторожно путаю педали).

ладно бы там были умолчательные параметры, а так всё вживую никаких многозначностей, определяй тип переданного параметра и вперёд.
Действительно есть проблема  - будем разбираться.
 
Urain, спасибо за сообщение. Ошибка исправлена.
 
stringo:
Вы представили код с ошибкой. Естественно, этот Ваш код и выдаёт ошибочную информацию. При этом Вы проигнорировали наши замечания по исправлению ошибки, каждый раз предлагая всё новый код и каждый раз с ошибкой.

Однако если бы вы мне сказали, что синхронизации быть не должно и надо в код ее встраивать...

Вместо этого вы упорно говорили, что все совпадает.

а TimeToString(time[0],TIME_DATE|TIME_MINUTES),"   буф1-",buf1[1],"   буф2-",buf2[1]); вместо TimeToString(time[1],TIME_DATE|TIME_MINUTES),"   буф1-",buf1[1],"   буф2-",buf2[1]);

это конечно ошибка, но на суть она не влияла.

Щас я еще индюк доделую проверю, насколько я был не прав. 

Тоесть вы говорили что все совпадает и правили код советника. А на самом деле ничего не совпадает и править надо код индюка(встраивать в него синхронизацию) 

Причина обращения: