Прошу объяснить эту запись. Звездочка - это ссылка? Не понимаю.
Попробую объясниться
"звёздочка" перед this - это оператор разыменования указателя в ссылку. В MQL, операция разыменования this в ссылку бесплатная (пустая) операция, т.к. this в MQL не просто указатель (как в C++), а MQL указатель гарантированно разыменованный в ссылку (может использоваться как указатель или ссылка без необходимости разыменования, явного или неявного) Если бы это был реальный указатель, например 'CDateTime *', то разыменование указателя в ссылку было бы реальной операцией, которая может привести к критической ошибке "невалидный указатель", т.к нельзя разыменовать невалидный указатель с ссылку.
Приведение ссылки 'CDateTime &' в 'MqlDateTime &', которое возможно благодаря публичному наследованию CDateTime от MqlDateTime.
this в MQL не просто указатель (как в C++), а MQL указатель гарантированно разыменованный в ссылку (может использоваться как указатель или ссылка без необходимости разыменования, явного или неявного)
T* Method() { return(&this); }
Чтобы из this сделать указатель, требовалось всегда взять GetPointer (короткая запись выше). Т.е. this - это уже ссылка на объект. А у структур и указателей даже нет, а this - есть.
"звёздочка" перед this - это оператор разыменования указателя в ссылку. В MQL, операция разыменования this в ссылку бесплатная (пустая) операция, т.к. this в MQL не просто указатель (как в C++), а MQL указатель гарантированно разыменованный в ссылку (может использоваться как указатель или ссылка без необходимости разыменования, явного или неявного) Если бы это был реальный указатель, например 'CDateTime *', то разыменование указателя в ссылку было бы реальной операцией, которая может привести к критической ошибке "невалидный указатель", т.к нельзя разыменовать невалидный указатель с ссылку.
Приведение ссылки 'CDateTime &' в 'MqlDateTime &', которое возможно благодаря публичному наследованию CDateTime от MqlDateTime.
Как-то всё сложно: "мы преобразуем this в ссылку, но не беспокойтесь, т.к. this и есть ссылка".
Чтобы из this сделать указатель, требовалось всегда взять GetPointer (короткая запись выше). Т.е. this - это уже ссылка на объект. А у структур и указателей даже нет, а this - есть.
Спасибо за уточнение, верно, в текущей релизной версии MQL, this является ссылкой и при передаче в качестве указателя нужно явно получить от него ссылку.
Полагаю, что operator[] должен возвращать какое-либо значение, т.е. не быть void.
Точно не в этом деле.
После обновления возникла ошибка компиляции библиотеки Tools\DateTime.mqh

Напишите плиз прямо тут в ветке как ее исправить - сейчас это тормозит работу, нет времени ждать обновления с исправлениями.После обновления возникла ошибка компиляции библиотеки Tools\DateTime.mqh
Напишите плиз прямо тут в ветке как ее исправить - сейчас это тормозит работу, нет времени ждать обновления с исправлениями.Проверьте код в строке 26 файла DateTime.mqh
+
попробуйте добавьте под ней строку:
b5260, ошибка компиляции. Строка для поиска: Oshibka 146.
Спасибо за сообщение.
Исправление внёс, будет доступно в следующей бете.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 5260: улучшения в Algo Forge, расширение OpenBLAS и новые правила наследования в MQL5
Ilyas, 2025.09.08 07:49
Прошу объяснить эту запись. Звездочка - это ссылка? Не понимаю.
Прошу объяснить эту запись. Звездочка - это ссылка? Не понимаю.
Попробую объясниться
В MQL, операция разыменования this в ссылку бесплатная (пустая) операция, т.к. this в MQL не просто указатель (как в C++), а MQL указатель гарантированно разыменованный в ссылку (может использоваться как указатель или ссылка без необходимости разыменования, явного или неявного)
Если бы это был реальный указатель, например 'CDateTime *', то разыменование указателя в ссылку было бы реальной операцией, которая может привести к критической ошибке "невалидный указатель", т.к нельзя разыменовать невалидный указатель с ссылку.
Ilyas #:
this в MQL не просто указатель (как в C++), а MQL указатель гарантированно разыменованный в ссылку (может использоваться как указатель или ссылка без необходимости разыменования, явного или неявного)
Чтобы из this сделать указатель, требовалось всегда взять GetPointer (короткая запись выше). Т.е. this - это уже ссылка на объект. А у структур и указателей даже нет, а this - есть.
Попробую объясниться
В MQL, операция разыменования this в ссылку бесплатная (пустая) операция, т.к. this в MQL не просто указатель (как в C++), а MQL указатель гарантированно разыменованный в ссылку (может использоваться как указатель или ссылка без необходимости разыменования, явного или неявного)
Если бы это был реальный указатель, например 'CDateTime *', то разыменование указателя в ссылку было бы реальной операцией, которая может привести к критической ошибке "невалидный указатель", т.к нельзя разыменовать невалидный указатель с ссылку.
Чтобы из this сделать указатель, требовалось всегда взять GetPointer (короткая запись выше). Т.е. this - это уже ссылка на объект. А у структур и указателей даже нет, а this - есть.
Спасибо за уточнение, верно, в текущей релизной версии MQL, this является ссылкой и при передаче в качестве указателя нужно явно получить от него ссылку.
... от него ссылку.