Ошибки, баги, вопросы - страница 2327
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Предлагаю не спорить, а просто поверить мне, что это ошибка.
Этот глагол слабо применим на техническом форуме. Попробовал C++
Ни один из вариантов не прокатил. Причины не ясны.
Если сделать их взаимозаменяемыми, тогда они оба просто не нужны.
В C++ возможно такое:
Я предлагал простейший вариант, который может быть реализован уже завтра (а не через 10 лет) и была бы внешняя схожесть с C++ (а иначе зачем вообще что-то менять). Тем более что если operator*() не стали и не будут делать (была об этом информация на форуме), непонятно почему operator->() вдруг реализовали бы (они одного порядка)
Почему в MQL до сих пор не исправлен баг, что базовый класс неявно приводится к производному классу? Даже предупреждения компилятора нет!
вы ждете ошибки компиляции? так ее не должно быть, потому что в данном случае это dynamic_cast
Cмотрите выше, fxsaber привёл C++ код.
компилится
компилится
Вы невнимательны
или вы. давайте сразу по делу
Я предлагал простейший вариант, который может быть реализован уже завтра (а не через 10 лет) и была бы внешняя схожесть с C++ (а иначе зачем вообще что-то менять). Тем более что если operator*() не стали и не будут делать (была об этом информация на форуме), непонятно почему operator->() вдруг реализовали бы (они одного порядка)
В таком виде он не нужен ни завтра ни через 10 лет. И внешняя схожесть не нужна, нужны возможности.
Чтоб хотя бы частично перенести STL из C++. А там дело не упирается только в operator->, там ещё много чего нужно.
operator-> был бы первым шагом на пути к умным указателям.
На самом деле с неявным кастом в том виде в котором он сейчас все не очень хорошо.
Видно, что dynamic cast включен в неявный каст
НО
во-первых непонятно зачем он включен если в языке dynamic cast явно присутствует
во-вторых он включен очень плохо, потому что ошибку dynamic cast в случае функции можно контролировать (на выходе плохой указатель), а неявный каст нельзя! потому что он бросает неконтролируемое исключение
2018.11.23 20:31:47.348 test (AUDNZD,M5) incorrect casting of pointers in 'test.mq5' (17,11)
толку от него такого ровно ноль.
надо или давать невалидный указатель, как функция, или исключить dynamic cast из неявного каста и давать ошибку компиляции.
Да, при наличии этой проблемы, работа с ООП плохо контролируема и ненадёжна. Где-то поменял тип в одном месте программы, а потом рванёт неизвестно где. В данных примерах ещё можно как-то выкрутиться с помощью костылей, т.к. тут простое присвоение указателей, и всё перед глазами. А в общем случае, когда указатель передаётся в какую-то функцию и динамически кастится неизвестно к чему, то уже никак не проконтролируешь.