Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий - страница 21
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
скиньте ссылку на нее если не сложно
Обычного Process Explorer от Руссиновича хватает для этого.
https://docs.microsoft.com/ru-ru/sysinternals/downloads/process-explorer
Давно напрягает длительное время компиляции кодов. Точнее даже не столько компиляции, сколько синтаксической проверки. К примеру, .mq5 файл в режиме Optimize=0 компилируется 9 секунд. Если же сделать из него .mqh файл и запустить компиляцию(синтаксическую проверку) этого файла, то затрачивается 8 секунд.
Т.е. именно парсинг и проверка синтаксиса занимает основное время. Общий объём используемых библиотек - около 3 мб, это немного. Так что, вероятно, выполняются какие-то лишние действия в процессе проверки. Либо же следует оптимизировать сам процесс. К примеру, если какие-то файлы исходника не изменились со времени предыдущей компиляции, то зачем их снова парсить? Это ж вроде очевидная вещь. Зачастую мы только в одном файле что-то меняем. Но у вас процесс компиляции/проверки всегда начинается с нуля и занимает одинаковое время. Это неразумно.
Недоработка компилятора:
Здесь должна выдаваться ошибка. Производному классу не может присваиваться базовый класс. Ибо для этого A& должен неявно каститься к B&, а такая операция недопустима. Да и противоречит это всё здравому смыслу.
Это прописано в правилах C++:
An object of any unambiguously derived class from a given base class can be assigned to an object of the base class. The reverse is not true because there is an implicit conversion from derived class to base class but not from base class to derived class. For example:
Поэтому можно разрешить такое присвоение, только если явно задан оператор ADerived::operator=(const ABase&), но никак не для неявных операторов. Иначе это постоянный источник трудноуловимых ошибок.
Недоработка компилятора:
Здесь должна выдаваться ошибка. Производному классу не может присваиваться базовый класс. Ибо для этого A& должен неявно каститься к B&, а такая операция недопустима. Да и противоречит это всё здравому смыслу.
А если у вас базовый клас имеет 50 полей, то при наследовании, если нужен операторе присвоения, каждый раз ручками прописывать все 50 полей?
Когда не нужен дефолтный оператор присвоения, или конструктор копирования - просто позначте их как delete:
А если у вас базовый клас имеет 50 полей, то при наследовании, если нужен операторе присвоения, каждый раз ручками прописывать все 50 полей?
Поскольку я не знаю, где размещать проблемы на MQ-сайте, я размещаю его здесь:
Несколько раз я внезапно испытывал это, не зная точно, почему, - окно, в котором я хочу опубликовать сообщение (ответ), блокируется «загрузить картинку», и я не могу избавиться от этого, независимо от того, что я нажмите кнопку. :(
Я не могу сохранить то, что уже написал, и мне нужно отменить запись, чтобы начать заново с начала. :(
Вот как это выглядит:
As I don't know where to post problems of the MQ-Website I post it here:
Several time I experienced that all of a sudden - with out knowing excatly why - the window in which I want to post a message (answer) is blocked by "upload picture" and I can't get rid of that, no matter what I click. :(
I can't save what I have already written and have to cancel the entry to re-start from thze beginning. :(
This is how it looks:
Чтобы не потерять свою запись, жмите на кнопку публикации. Появится новый незавершенный пост. Затем жмите на кнопку "правка" и дописывайте свой пост.
Чтобы не потерять свою запись, жмите на кнопку публикации. Появится новый незавершенный пост. Затем жмите на кнопку "правка" и дописывайте свой пост.
Да, я тоже так спасаю свои публикации: срочно жму "Добавить" и потом уже редактирую. Причина появления картинки на весь экран плавающая - воспроизвести трудно.
В продолжение темы об операторах присваивания. Вскрылся ещё один баг, только уже на этапе выполнения:
Из распечатки видим, что класс B не скопировался, т.е. неявный оператор для него не вызывался.
При этом оператор для класса A вызывался. Т.е. перескочили через B.
В C++ всё работает как положено.