Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Наверное должно на этапе компиляции выдаваться ошибка template mismatch.
А вот в ситуации, когда есть объект array
Такой ошибки уже возникать не должно, потому что в первом случае вызов Array[int] используется как левый параметр операции =, и не является переменной double, а во втором случае как правый, причем левый параметр является переменной типа double.
Вы не слышите, ничего оно не должно - перегрузка по типу запрещена и об этом явно написано в C++ стандарте (а мкл как С++ подобном - вероятно тоже):
Вероятную причину назвал выше. Так что ваши operator'ы[] - невалидны.
Вы не слышите, ничего оно не должно - перегрузка по типу запрещена и об этом явно написано в C++ стандарте:
Вероятную причину назвал выше. Так что ваши operator'ы[] - невалидны.
Я отвечал Вам не о стандарте, а о логике исходя из здравого смысла. Ваше определение "вероятной" причины моих доводов не отменяет. Возможность перегрузки операции типизации (в т.ч. неявной) не противоречит процитированному Вами стандарту, поскольку перегружается операция приведения к конкретному явно определяемому из контекста типу.
Возможно, я не слишком ясно выразился, но после этого пояснения, надеюсь, стало более понятно.
П.С. Разумеется мой приведенный выдуманный код противоречит стандарту. Но если уж нужно Вам расшифровать (поскольку я сам по ходу темы выяснял для себя, как правильнее сформулировать вопрос), то выглядеть код должен так:
Если выступаете за введение operator type() - то отлично. Если за отступ от плюсов, то я против (разрешив перегрузку по возвращаемуму типу) для решения какой-то частной задачи (которую наверняка можно решить иначе и красивее - вот как-то никогда не извращался подобным образом как в первом сообщении).
Да. в итоге именно за введение оператора типизации. Поскольку он решает именно ту задачу, которую я ставил в начальном посте ветки, только более "конвенциальным" (вписывающимся в стандарты, и вообще, наверное, более правильным) способом.
П.С. Разумеется мой приведенный выдуманный код противоречит стандарту.
Почему же противоречит, в плюсах вполне валидный. А в мкл толком доков и нет.
Потому что там изначально две одинаковых функции operator[] были с разным типом возврата (во втором варианте я это исправил). Это запрещено стандартом. А приводить типы (в том числе неявно) не запрещено, просто ещё не успели реализовать. Учитывая ударную скорость развития mql5 уверен, что рано или поздно реализуют. Особенно если кто-то ещё кроме меня обратит на это внимание на форуме...
Потому что там две одинаковых функции operator[] были с разным типом возврата. Это запрещено стандартом. А приводить типы (в том числе неявно) не запрещено, просто ещё не успели реализовать. Учитывая ударную скорость развития mql5 уверен, что рано или поздно реализуют. Особенно если кто-то ещё кроме меня обратит на это внимание на форуме...
Я про последний код - он нормальный.
Я про последний код - он нормальный.
Он нормальный, но в mql5 пока не работает. Будем следить и надеяться за новшествами в mql5. Вот именно эта невозможность адекватной реализации объекта массива, из-за невозможности оперировать с пользовательским типом также, как с обыкновенным массивом, лично меня сильно коребит уже давно. Делаешь свой массив, и он как бы изначально оказывается ущербным, не обладающим тем же удобством использования, как встроенные.
Он нормальный, но в mql5 пока не работает. Будем следить и надеяться за новшествами в mql5. Вот именно эта невозможность адекватной реализации объекта массива, из-за невозможности оперировать с пользовательским типом также, как с обыкновенным массивом, лично меня сильно коребит уже давно. Делаешь свой массив, и он как бы изначально оказывается ущербным, не обладающим тем же удобством использования, как встроенные.
Ну я больших чудес не жду, язык уже не особо развивают, сомневаюсь, что добавят оператор приведения. Вот меня конкретно напрягает невозможность сделать так:
но говорить бесполезно, думаю.
Ну я больших чудес не жду, язык уже не особо развивают, сомневаюсь, что добавят оператор приведения. Вот меня конкретно напрягает невозможность сделать так:
но говорить бесполезно, думаю.
Не очень понятно, в чем проблема. Разве нельзя вынести инициализацию объекта в отдельный метод типа Init(), может даже виртуальный?