Ошибки, баги, вопросы - страница 2755
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ошибка компилятора. В старых билдах работает нормально.
Да есть такое, еще 2020.03.25 сообщал, уже день в день как 2 месяца...
(не исправлено MT5(build 2390)) (new) Compile Error, при использовании модификатора доступа по умолчанию при наследовании в шаблонном классе, когда шаблонный параметр выступает базовым классом.
Ещё один баг:
Ругается на C::operator=, хотя здесь выполняется D::operator=. Чтобы обойти баг, приходится делать перегрузку оператора для всех базовых классов в иерархии.
p.s. Вообще некорректное поведения оператора присваивания разработчики уже давно обещали пофиксить, но воз и ныне там. Это безобразие. Например, следующий код компилируется без ошибок, хотя там присваивается чёрти что:
Ещё один баг:
1) Ругается на C::operator=, хотя здесь выполняется D::operator=. Чтобы обойти баг, приходится делать перегрузку оператора для всех базовых классов в иерархии.
2) Вообще некорректное поведения оператора присваивания разработчики уже давно обещали пофиксить, но воз и ныне там. Это безобразие. Например, следующий код компилируется без ошибок, хотя там присваивается чёрти что:
1) Скорее всего не баг, а закономерное поведение учитывая особенности MQL, а именно:
В MQL методи и поля базового класса "напрямую доступны" из классов наследников.
По сути поведение в MQL при наследовании аналогично тому, что в С++ применить using declaration для каждого базового поля и метода.
C++ online: https://onlinegdb.com/rJkckvFsU
Таким образом в операции d = c;
при поиске подходящей функции так же участвуют все функции operator= из базовых классов.
В результате оптимальная сигнатура для вызова перегруженной функции является дефолтный и удаленный void operator=(const C&).
1) Скорее всего не баг, а закономерное поведение учитывая особенности MQL, а именно:
В MQL методи и поля базового класса "напрямую доступны" из классов наследников.
По сути поведение в MQL при наследовании аналогично тому, что в С++ применить using declaration для каждого базового поля и метода.
C++ online: https://onlinegdb.com/rJkckvFsU
Таким образом в операции d = c;
при поиске подходящей функции так же участвуют все функции operator= из базовых классов.
В результате оптимальная сигнатура для вызова перегруженной функции является дефолтный и удаленный void operator=(const C&).
Необязательно искать сакральный смысл в очевидной недоработке языка. Вот здесь я уже поднимал данную проблему, и Ильяс заверил, что это будет исправлено. Но уже почти 10 месяцев пролетело... (
По сути поведение в MQL при наследовании аналогично тому, что в С++ применить using declaration
Ну да, а если бы в MQL допустим было 2 x 2 = 5, то можно было сказать, что это аналогично тому, как если в C++ к результату добавить операцию инкремента )
Необязательно искать сакральный смысл в очевидной недоработке языка.
Вам объяснили как и почему так работает, если для вас это сложно - к счастью ни чем не могу помочь...
Это не сакральный смысл, а обычный подход с целью снижения входного уровня пользователей, что бы они могли обращаться к полям и методам базового класса без использования "this.", а так же в случаях overloading-a функций базового класса.
Вам объяснили как и почему так работает, если для вас это сложно - к счастью ни чем не могу помочь...
Это не сакральный смысл, а обычный подход с целью снижения входного уровня пользователей, что бы они могли обращаться к полям и методам базового класса без использования "this.", а так же в случаях overloading-a функций базового класса.
Здравствуйте! арендовал советника, в терминале аренда показывается, но по какой то причине я не могу его установить. Кнопка "установить" синего цвета.
Приложите, пожалуйста скриншот вкладки "Маркет".
В терминале вкладка "Сообщество" заполнена? Internet Explorer обновили на последнюю версию? Используете настоящую Windows или запускаетесь при помощи wine?