Ошибки, баги, вопросы - страница 2563
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
https://www.mql5.com/ru/docs/basis/oop/staticmembers
?
?
у него в примере модификатор static, если убрать, то компилятор выдаст как положено предупреждение
к статику можно из любого участка кода обратиться через оператор разрешения контекста... вообще из любого! (области видимости не помню, давно не проверял,но скорее всего будет глобальная как будто описана в самом верху кода, т.е. не важно где статик метод / поле объявили)
к статику можно из любого участка кода обратиться через оператор разрешения контекста... вообще из любого! (области видимости не помню, давно не проверял,но скорее всего будет глобальная как будто описана в самом верху кода, т.е. не важно где статик метод / поле объявили)
Это давно вдруг так стало :)?
К статикам применимы все те же правила (private, protected, public), просто они не требуют создания объекта.
Тут очевидный баг.
Это давно вдруг так стало :)?
не знаю, могу точно утверждать, что пару месяцев назад админ @Ilyas объяснял порядок инициализации статиков, причем упомянул, что статик методы и статик поля инициализируются вместе с глобальными переменными при запуске MQL-программы...дальше поиском по его сообщениям
К статикам применимы все те же правила (private, protected, public), просто они не требуют создания объекта.
Тут очевидный баг.
спорить не готов и не хочу, но тексту справки поведение статик методов соответствует
ну и имхо, которое не считаю нужным подтверждать аргументами - MQL большими шагами в строну поведения программ на C# движется,там похожая ситуация, как и если программист принимает решение использовать оператор разрешения контекста ,значит он осознанно отказывается от помощи компилятора по выявления нарушения целостности данных в классе, существуют классические способы получения методов и полей без оператора разрешения контекста
UPD: понемногу решил переписать свою библиотеку MQL, с ужасом замечаю, что пишу как видел в популярных кодах на MQL имена методов и полей совпадающих с именами зарезервированных слов...имхо это тоже шаг в сторону отказа от помощи компилятора при "разваливании" зависимостей.... кактотак )))
Igor Makanu:
как и если программист принимает решение использовать оператор разрешения контекста ,значит он осознанно отказывается от помощи компилятора по выявления нарушения целостности данных в классе, существуют классические способы получения методов и полей без оператора разрешения контекста
эээ по-моему вы перекурили ООП, отдохните, а потом со свежей головой. оператор разрешения контекста определяет видимость, но никак не влияет на доступ.
эээ по-моему вы перекурили ООП, отдохните, а потом со свежей головой. оператор разрешения контекста определяет видимость, но никак не влияет на доступ.
ну я как бы сам решу, что курить и когда отдыхать )))
ЗЫ: фокусов всегда много в любом языке с доступом к содержимому памяти, хабр почитываю там в комментах регулярные терки то питону.то по С++, еще раз - есть более гуманные способы работы с полями и методами, если решил, что так быстрее, ну значит не греши на то, что в итоге получишь - во всех компиляторах всегда можно было влезть куда не следует )))
не знаю, могу точно утверждать, что пару месяцев назад админ @Ilyas объяснял порядок инициализации статиков, причем упомянул, что статик методы и статик поля инициализируются вместе с глобальными переменными при запуске MQL-программы...дальше поиском по его сообщениям
спорить не готов и не хочу, но тексту справки поведение статик методов соответствует
"private – разрешает доступ к переменным и методам класса только из методов данного класса."
В каком месте не понятно слово "только"?
OnStart не является методом класса А, согласно примеру.
"private – разрешает доступ к переменным и методам класса только из методов данного класса."
В каком месте не понятно слово "только"?
OnStart не является методом класса А, согласно примеру.
речь не о модификаторе private, а о модификаторе static - сделайте тесты и увидите как в MQL ведет себя static
не знаю, могу точно утверждать, что пару месяцев назад админ @Ilyas объяснял порядок инициализации статиков, причем упомянул, что статик методы и статик поля инициализируются вместе с глобальными переменными при запуске MQL-программы...дальше поиском по его сообщениям
спорить не готов и не хочу, но тексту справки поведение статик методов соответствует
ну и имхо, которое не считаю нужным подтверждать аргументами - MQL большими шагами в строну поведения программ на C# движется,там похожая ситуация, как и если программист принимает решение использовать оператор разрешения контекста ,значит он осознанно отказывается от помощи компилятора по выявления нарушения целостности данных в классе, существуют классические способы получения методов и полей без оператора разрешения контекста
UPD: понемногу решил переписать свою библиотеку MQL, с ужасом замечаю, что пишу как видел в популярных кодах на MQL имена методов и полей совпадающих с именами зарезервированных слов...имхо это тоже шаг в сторону отказа от помощи компилятора при "разваливании" зависимостей.... кактотак )))
https://pikabu.ru/story/nevozmozhno_tak_nevozmozhno_2129852
?
странная ситуация, со стаитиками давно работает все вне класса. а я тут распинаюсь.... ради прикола воспроизведите у себя код:
Вы видите экземпляр объекта? ... а он есть в MQL ;)
ЗЫ: причем есть на уровне справки... ко мне какие претензии?
https://www.mql5.com/ru/docs/basis/oop/staticmembers
Отсутствие возможности объявлять статически члены класса привело бы к необходимости объявлять эти данные на глобальном уровне программы. Это разорвало бы отношения между данными и их классом, а также не согласуется с основной парадигмой ООП – объединение в классе данных и методов для их обработки. Статический член позволяет данным класса, которые не специфичны для отдельного экземпляра, существовать в области видимости класса.