Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему нельзя инициализировать переменные и массивы в классе?
Так:
В чем здесь глубина экзистенциально трансцендентального смысла? :)
Почему нельзя инициализировать переменные и массивы в классе?
Так:
В чем здесь глубина экзистенциально трансцендентального смысла? :)
Потому что члены класса должны инициализироваться в конструкторе класса.
Не путайте объявления переменных с описанием (не объявлением!) членов класса
Потому что члены класса должны инициализироваться в конструкторе класса.
Не путайте объявления переменных с описанием (не объявлением!) членов класса
Раз уж про массивы пошла речь, будет ли добавлено объявления многомерного динамического массива? типа int array[][] = new int[i][k];
сейчас можно только одномерный объявлять и динамически изменить с помощью ArrayResize.
Для следующего n-мерности только статически устанавливать получается.
Раз уж про массивы пошла речь, будет ли добавлено объявления многомерного динамического массива? типа int array[][] = new int[i][k];
сейчас можно только одномерный объявлять и динамически изменить с помощью ArrayResize.
Для следующего n-мерности только статически устанавливать получается.
Так объявите через структуру и операторы = и []
Будет Array2D array; array.Resize(i,k); array.[i-1].[k-1]=12;
Так объявите через структуру и операторы = и []
Будет Array2D array; array.Resize(i,k); array.[i-1].[k-1]=12;
Спасибо, не догадался.
Но все равно это костыль :)
Когда костыли в собственном коде это терпимо, но когда костыли и ограничения в языке это удручает (никаких претензий к MQL просто иногда расстраивает).
Спасибо, не догадался.
Но все равно это костыль :)
Когда костыли в собственном коде это терпимо, но когда костыли и ограничения в языке это удручает (никаких претензий к MQL просто иногда расстраивает).
MQL5: Добавлена поддержка абстрактных классов и чисто виртуальных функций.
comp:
Учусь ООП на MQL. Все нововведения освоил и активно применяю. А вот с этой появившейся фичей пока не придумал, где могло бы быть, действительно, удобно. Короче, адекватный небольшой пример нужен.
Это нужно для объявления родительского класса, который сам по себе ничего не делает, так как абстрактный. Но зато он объявляет набор чисто виртуальных функций для потомков. Ближе к жизни, мы можем объявить класс Человек с чисто виртуальной функцией Перемещаться :)) Она сама по себе ничего не делает, но говорит классам -потомкам, что они должны ее реализовать, иначе сами останутся абстрактными.
И вот один потомок Автомобилист: Человек реализует функцию Перемещаться, как поездка на авто. Другой потомок, Пешеход, как ходьбу. Третий, Ребенок, как ползанье на четвереньках. Так яснее стало?
Есть более выхолощенные классы, называются интерфейсы. Они вообще не имею полей данных, только чисто виртуальные функции.
***
Для балансировки информации, так как некоторые совсем уже не следят за корректностью фраз:
Только теоретики могут рассказывать сказки про "все могу, смотрите на C". К сожалению, большая часть С кода в мире - это жутко воняющая куча, которую предпочитают не трогать. Фактически эти завалы процедурного С абсолютно не поддерживаемы. Только переводом их на ООП/классы ты получаешь хоть минимальную гарантию инкапсуляции/защиты данных этого кода.
У нас нет костылей или промежуточных врапперов, теряющих скорость. Данные предоставляются автоматически, их инициализация и докачка производится асинхронно. Ну и плюс сотни прямых функций...
Квик и Метасток никогда не были быстрыми и уже не будут. Это одни из самых медленных систем с халтурными языками автоматизации. В реальности они давно уже технологические зомби. Tradestation тоже близок к могиле после перепродаж компании - там все очень печально с экономической стороны.
В ближайшие полгода вы увидите массу новых возможностей MetaTrader 5 - у нас высвобождаются ресурсы и мы нацелены на скорую реализацию своих задумок.
Хочется пожелать удачи Вам в этом нелегком деле и спросить: Имплементация R в МТ4 в списке новых возможностей значится? Обещали после новой пятерки реализовать. Ничего не поменялось надеюсь?
Успехов
Это нужно для объявления родительского класса, который сам по себе ничего не делает, так как абстрактный. Но зато он объявляет набор чисто виртуальных функций для потомков. Ближе к жизни, мы можем объявить класс Человек с чисто виртуальной функцией Перемещаться :)) Она сама по себе ничего не делает, но говорит классам -потомкам, что они должны ее реализовать, иначе сами останутся абстрактными.