Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я так и не понял про указатели и ссылки в MQL5 и теперь уже в MQL4. В чем разница передачи по ссылке и указателю кроме лишнего кода? В С++ разница есть, а тут в чем? Если не сложно напишите более развернуто.
Передача по ссылке требует, чтобы объект переданный по ссылке, был инициализирован. Передача по указателю этого ограничения не имеет:
При вызове функции TestShapeRef код аварийно завершит свою работу т.к. shape не инициализирован. С другой стороны, внутри функции TestShapePointer требуются постоянные проверки, инициализирован ли переданный объект или нет. Поэтому следуйте импирическому правилу:
Есть еще один тонкий ньюанс, о котором нужно помнить. Рассмотрим предыдущий пример:
Будет ли эта программа работать корректно? Нет, она завершиться ошибкой "invalid pointer access" на строке printf(shape.name); //ERROR (!?) , не смотря на то, что мы вроде бы гарантированно создаем объект в функции TestShapePointer. Дело в том, что на самом деле вместо shape была передана NULL ссылка. Т.е. shape внутри функции и переданный shape это разные объекты! Таким образом, после выхода из функции shape по-прежнему равен NULL, а указатель shape внутри функции потерян (очищен в стеке). Так вот.А можно ли создать массив с объектами разных типов?
Допустим вот такой пример:
//---
Как получить доступ к методам классов наследников?
Как получить доступ к методам классов наследников?
Кастинг к целевому типу пробовали?
Нет. Впервые слышу. Где можно об этом почитать?
Обычное приведение типа, вот пример:
Кастинг к целевому типу пробовали?
Блин, и вы после этого про безопасность языка говорите?
А не лучше воспользоваться полиморфизмом?
Примерно так: