Ошибки, баги, вопросы - страница 3589
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Используя данный код, эксперт за одну миллисекунду отправляет сразу три сигнала по одной из указанных в коде валютных пар
Вы что то делаете не так. Всё работает как надо.
Вы что то делаете не так. Всё работает как надо.
Опять возникли какие-то неполадки. Полагаю, что ваш код будет работать в случае, если сразу по всем трем валютным парам будет сигнал. Иначе нет

Логично, вроде, int -> double.
Логично, вроде, int -> double.
Почему логично? Почему компилятор должен выбрать именно double, а не string?
почему это не баг
Если я правильно понимаю, то int --> double не относится даже к стандартному преобразованию (как и int --> string).
Поправьте, если я ошибаюсь
https://www.mql5.com/ru/docs/basis/function/functionoverload
Алгоритм выбора перегруженной функции
Стандартное повышение типа лучше, чем остальные стандартные преобразования. Повышение - это преобразование float в double, а также bool, char, short или enum в int. Кроме того, к стандартным преобразованиям относятся преобразования массивов похожих целых типов. Похожими типами являются: bool, char, uchar, так как все три типа являются однобайтовыми целыми; двубайтовые целые short и ushort; 4-байтовые целые int, uint и color; long, ulong и datetime.
Несомненно, строгое соответствие является наилучшим. Для достижения такого соответствия могут использоваться приведения. Компилятор не справится с двусмысленной ситуацией. Поэтому не следует полагаться на тонкие различия в типах и неявные преобразования, которые делают перегруженную функцию неясной.
Если вы сомневаетесь, используйте явные преобразования для обеспечения строгого соответствия.
Почему логично?
Потому что числа. Если в C++ такая же байда - проехали.
Потому что числа. Если в C++ такая же байда - проехали.
Если:
то:
А если:
то тогда ок.
Потому что числа. Если в C++ такая же байда - проехали.
Func(double) OK
Func(double) OK