Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Никак не затратно в этом случае. Затратны (на одно разыменование при обращении) вызовы виртуальных методов.
код не успел выцарапать, вот есть метод:
могу так записать (результаты вызова один в один - т.е. корректно все сделал):
вызываю так:
т.е. вариант 1 и 2 по скорости будут один в один? .... смущает конечно длина строки в if() ... трудно читаемый код, возможно с непривычки
код не успел выцарапать, вот есть метод:
могу так записать (результаты вызова один в один - т.е. корректно все сделал):
вызываю так:
т.е. вариант 1 и 2 по скорости будут один в один? .... смущает конечно длина строки в if() ... трудно читаемый код, возможно с непривычки
Если один в один, без оптимизации компилятором, то второй быстрее. Не создается и не ициализируется указатель jo.
PS.
лишнее. Просто return jv
UPD: Так короче?UPD: Так короче?
JSONValue *jv не содержит методов getInt() , getDouble() - будет ошибка, нужен тип JSONObject - или привести к этому типу
'getInt' - no one of the overloads can be applied to the function call
enum не хочу приводить к int - комментарии лень писать, потом не разберусь, что с чем сравнивал, а перечисление и интересно лишь тем, что его читать глазами можно
Спасибо!
JSONValue *jv не содержит методов getInt() , getDouble() - будет ошибка, нужен тип JSONObject - или привести к этому типу
'getInt' - no one of the overloads can be applied to the function call
enum не хочу приводить к int - комментарии лень писать, потом не разберусь, что с чем сравнивал, а перечисление и интересно лишь тем, что его читать глазами можно
Спасибо!
У тебя разве не JSONValue:public JSONObject ?
не работает так
библиотека с гитхаба, вот исходники приатачивал https://www.mql5.com/ru/forum/85652/page72#comment_16758982
ранняя версия (чтоб не качать) в КБ https://www.mql5.com/en/code/11134 - там же и пример использования
не работает так
библиотека с гитхаба, вот исходники приатачивал https://www.mql5.com/ru/forum/85652/page72#comment_16758982
ранняя версия (чтоб не качать) в КБ https://www.mql5.com/en/code/11134 - там же и пример использования
вернет не JSONObject*, все упадет в run-time)))
И поделом))) НИКОГДА нельзя напрямую кастить от базового к наследнику - это UB ( UNDEFINED BEHAVIOR), когда Вы так в плюсах сделаете, ничего падать не будет, но... (есть шутка, про возможность исполнения при этом боже храни короля))))
Правильно:
А первого, кто начнет Вам рассказывать про стоимость dynamic_cast - пришибайте вопросом, откуда run-time знает, что каст неправильный?
1) Мдяя... У Вас UB тут. Нельзя кастить к наследнику, но Вы типа обошли это созданием указателя на наследник и присвоения ему значения правильного указателя.
Все ничего, но как только вернет не JSONObject*, все упадет в run-time)))
И поделом))) НИКОГДА нельзя напрямую кастить от базового к наследнику - это UB ( UNDEFINED BEHAVIOR), когда Вы так в плюсах сделаете, ничего падать не будет, но... (есть шутка, про возможность исполнения при этом боже храни короля))))
2) Правильно: А первого, кто начнет Вам рассказывать про стоимость dynamic_cast - пришибайте вопросом, откуда run-time знает, что каст неправильный?
1) Нет ни какого UB и ни чего не упадет даже когда вернется не JSONObject*, так как реальный тип объекта проверяется через метод jv.isObject(), который как раз вы и не используете.
2) Именно ваш пример может стать нерабочим, если в следующей версии библиотеки появится новый тип данных, который использует JSONObject как базовый класс.
1) Нет ни какого UB и ни чего не упадет даже когда вернется не JSONObject*, так как реальный тип объекта проверяется через метод jv.isObject(), который как раз вы и не используете.
2) Именно ваш пример может стать нерабочим, если в следующей версии библиотеки появится новый тип данных, который использует JSONObject как базовый класс.
Выделил. Проверка только на следующей строке))) В примере у создателя либы, как раз наоборот, сначала проверка, потом каст)
UPD: dynamic_cast в обе стороны работает)
UPD2: если появится наследник у JSONObject, то с чего это упасть должно?
Мдяя... У Вас UB тут.
UB никакого нет, mql каст включает в себя в том числе и dynamic_cast. просто все упадет в случае неправильного указателя.
Согласен)) Это я по плюсовому)))