Ошибки, баги, вопросы - страница 1615
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Ошибка компиляции:
Вот ещё пара ошибок:
И также что-то перемудрили с приведением указателей.
Следующий код не компилируется:
хотя приведение тут явное. В С++ всё работает.
И также что-то перемудрили с приведением указателей.
Все правильно компилятор ругается
Иди почитай про dynamic_cast, static_cast и reinterpret_cast и про то когда их правильно использовать, а когда нет.
С++ преобразует этот код в reinterpret_cast, а MQL в dynamic_cast. И насколько я понимаю, это как раз тот случай когда компилятор может найти ошибку динамик каста во время компиляции.
reinterpret_cast в данном случае нелегитимен, поэтому то что этот код компилируется в С++ не аргумент.
С++ преобразует этот код в reinterpret_cast, а MQL в dynamic_cast. И насколько я понимаю, это как раз тот случай когда компилятор может найти ошибку динамик каста во время компиляции.
reinterpret_cast в данном случае нелегитимен, поэтому то что этот код компилируется в С++ не аргумент.
Погодите, зачем вы мешаете всё в кучу? Причём здесь динамик каст? В задачи компилятора не входят игры в Шерлока Холмса и что-то там искать в логике программы. Он выполняет лишь формальную проверку соответствия стандарту языка, не более. И с точки зрения стандарта у меня всё корректно.
Тем более что дело тут вообще не в cast. Если бы вы внимательно посмотрели мой пример, то увидели бы, что проблема там связана с protected. Если его заменить на public, то всё нормально. Сам объект от этого не меняется. Т.е. в компиляторе MQL просто излишнее ограничение, вот и всё.
Так что не стоит строить домыслы и искать тайный смысл там, где его явно нет. А есть лишь банальная ошибка компилятора.