Ошибки, баги, вопросы - страница 2639
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А ключ портативного режима не требуется случайно?
Руками запускаются все терминалы?
Руками, да все запускаются. В итоге, так руками и запускал.
Ключ портативного режима ничего не меняет в этом отношении.
Дело в том, что МТ4 выбрасывает окно авторизации, и запуск программы не считается завершённым.
Надо использовать "start" в пакетном файле.
В общем, получается, разобрался я в этом вопросе.
Спасибо за участие!
Вы так и не поняли в чем дело, видимо невнимательно читаете мои посты. Мое обращение к разработчикам, а не к вам. Я не нуждаюсь вашим дешевым советам.
Успокойтесь и не надо так волноваться.
В очередной раз убеждаюсь что люди с низким развитием мозговых извилин как правило и про вежливость мало понимают.
Вы даже не способны понять что вам говорят более знающие люди, а грубите как пацанчик из детсада, ещё и не научившийся грамотно писать.
однако, именно работа над проектами дает возможность оценить возможности языка и обнаружить его недостатки и баги...
Ранее, при работе над MQL проектами, информация о дефектах (багах) предоставлялась в порядке их обнаружения.
Сейчас же решено опробовать новый подход - работа до блокирующего дефекта с последующим предоставлением информации о всех обнаруженных.
Создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...
Убил уйму времени и сил, что бы раскопать и понять, что проблема не в коде, а в работе MQL компилятора. (С++ online: https://onlinegdb.com/H1R1fR5ML)
Предположительно, проблема в работе кеша шаблонного класса "main_wrapper" при генерации кода во время компиляции, когда в качестве параметра передается internal class "internal_wrapper" от шаблонного класса "A" для различных типов данных (int, B*, B, C).
Какой первый тип данных будет создан шаблонным классом "main_wrapper<A<TEMPLATE_TYPE>::internal_wrapper>, такой тип данных и будет далее использоваться во всех объектах, данного шаблона в будущем.
Другой баг с генераций кода шаблонного класса будет предоставлен ниже.
Еще один баг MT5(build 2316) с генерацией кода шаблонного класса при использовании internal class.
С++ online: https://onlinegdb.com/HJkKXAqMU
Еще один дефект MT5(build 2316), связанный с internal class - отсутствие возможности явно сослаться на глобальное пространство имен.
С++ online: https://onlinegdb.com/H14NF05G8
Очень противный баг, блокирующий дальнейшую разработку.
Создаешь сложный несколько раз обернутый объект с внутренним типом "С", а там оказывается совсем другой тип данных, может "B", может "int", что хочешь...
Убил уйму времени и сил, что бы раскопать и понять, что проблема не в коде, а в работе MQL компилятора. (С++ online: https://onlinegdb.com/H1R1fR5ML)
Предположительно, проблема в работе кеша шаблонного класса "main_wrapper" при генерации кода во время компиляции, когда в качестве параметра передается internal class "internal_wrapper" от шаблонного класса "A" для различных типов данных (int, B*, B, C).
Какой первый тип данных будет создан шаблонным классом "main_wrapper<A<TEMPLATE_TYPE>::internal_wrapper>, такой тип данных и будет далее использоваться во всех объектах, данного шаблона в будущем.
Другой баг с генераций кода шаблонного класса будет предоставлен ниже.
А так правильно?
Спасибо, действительно введение фиктивного шаблонного параметра, в случаи примера, обходит проблему.
Однако, что касается глобального проекта то тут все немного сложнее: internal class применялся как альтернатива по отсутствующему typedef typename функционалу с целью упростить как процес разработки так и применения финального класса контейнера.
Возможно, стоит подождать исправлений от разработчиков.
В крайнем случаи, все зависимости придется тащить наружу, надеясь на отсутствие очередной успешной компиляции с undefined behavior при выполнении.
Подводя итог по internal class функциональности,
можно однозначно сказать, что для нормального его использования очень не хватает typedef declaration функциональности, хотя бы ее примитивной формы...
Так вместо вполне компактного и понятного кода С++:
Приходится городить забор с #define и наследований через internal class:
Проблемы при использовании internal class в качестве typedef declaration:И проблем тут на много больше, чем может показаться на первый взгляд.
Проблемы при использовании #define в качестве typedef declaration:
Для этого разработчики добавили "operator= delete".
Однако видится не логичным разрыв связки delete/default, так как все опять нужно прописывать вручную.
Может что-то делаю не так?