Особенности языка mql5, тонкости и приёмы работы - страница 42 1...353637383940414243444546474849...339 Новый комментарий fxsaber 2017.06.07 22:25 #411 PositionSelect в случае неудачи обнуляет все PositionGet-данные. fxsaber 2017.06.07 23:22 #412 Классическая ошибкаvoid Func( int& ) {} void OnStart() { int i; Func(true ? i : i); // '?' - parameter passed as reference, variable expected Func(i); // OK } fxsaber 2017.06.08 22:05 #413 fxsaber: Классическая ошибкаЗадумался, а правильно ли, что это ошибка? TheXpert 2017.06.08 22:50 #414 fxsaber: Задумался, а правильно ли, что это ошибка?С точки зрения правильности правильно.По-видимому тернарный оператор возвращает не ссылку а переменную по значению (что в принципе не не логично).Получается темповая переменная, которую в mql не любят функции со ссылочными параметрами.Т.е. тернарный оператор и ссылки не дружат, если вкратце.Сточки зрения здравого смысла -- хз, конструкция логична. Странная реакция компилятора на Удивительное рядом: iEnvelopesOnArray ООП. Вопросы применения fxsaber 2017.06.08 23:23 #415 Комбинатор: Получается темповая переменная, которую в mql не любят функции со ссылочными параметрами.MqlTick Out() { MqlTick Tick = {0}; return(Tick); } void In( MqlTick& ) {} void OnStart() { In(Out()); }Как раз "любит". Именно и-за подобных примеров возникли сомнения. TheXpert 2017.06.08 23:38 #416 fxsaber: Как раз "любит". Именно и-за подобных примеров возникли сомнения.по самому описанию ошибки похоже на проблеиы со ссылками и не-ссылками.может кто-нить с более актуальными знаниями по языку объяснит. Alexey Viktorov 2017.06.09 07:54 #417 fxsaber: Классическая ошибкаvoid Func( int& ) {} void OnStart() { int i; Func(true ? i : i); // '?' - parameter passed as reference, variable expected Func(i); // OK }A если такvoid Func( int& ) {} void OnStart() { int i; Func((true ? i : i)); Func(i); // OK } fxsaber 2017.06.09 07:58 #418 Alexey Viktorov: A если такПроверить - быстрее, чем делать пост.Не работает, конечно. Alexey Viktorov 2017.06.09 08:05 #419 fxsaber: Проверить - быстрее, чем делать пост.Не работает, конечно.Странно. Я таким вариантом пользуюсь всегда при открытии позиций с тейками или нет. trade.BuyStop(lot, buyPrice, _Symbol, 0.0, (tacke == 0.0 ? 0 : buyPrice+tacke)); trade.SellStop(lot, sellPrice, _Symbol, 0.0, (tacke == 0.0 ? 0 : sellPrice-tacke)); fxsaber 2017.06.09 08:17 #420 Alexey Viktorov: Странно. Я таким вариантом пользуюсь всегда при открытии позиций с тейками или нет.В таких случаях и без доп. скобок работать будет. 1...353637383940414243444546474849...339 Новый комментарий
Классическая ошибка
Задумался, а правильно ли, что это ошибка?
С точки зрения правильности правильно.
По-видимому тернарный оператор возвращает не ссылку а переменную по значению (что в принципе не не логично).
Получается темповая переменная, которую в mql не любят функции со ссылочными параметрами.
Т.е. тернарный оператор и ссылки не дружат, если вкратце.
Сточки зрения здравого смысла -- хз, конструкция логична.Получается темповая переменная, которую в mql не любят функции со ссылочными параметрами.
Как раз "любит". Именно и-за подобных примеров возникли сомнения.
по самому описанию ошибки похоже на проблеиы со ссылками и не-ссылками.
может кто-нить с более актуальными знаниями по языку объяснит.
fxsaber:
Классическая ошибка
A если так
A если так
Проверить - быстрее, чем делать пост.
Не работает, конечно.
Проверить - быстрее, чем делать пост.
Не работает, конечно.
Странно. Я таким вариантом пользуюсь всегда при открытии позиций с тейками или нет.
Странно. Я таким вариантом пользуюсь всегда при открытии позиций с тейками или нет.