Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Господа, может попробуем дискутировать предметно? :)
Правильный лист не должен для использования его для произвольного класса требовать явной имплементации нового класса.
Поэтому правильная имплементация должна опираться на шаблоны.
Справедливости ради, я не уверен, что это реализуемо на представленном уровне шаблонов.
Но это на самом деле далеко не все проблемы в статье.
Правильный лист не должен для использования его для произвольного класса требовать явной имплементации нового класса...
Условно CList должен включать в себя разные типы узлов...
Зачем? ) Контейнер -- это совокупность однородных объектов.
Разница самих объектов может быть реализована полиморфизмом в рамках уже объектов и к списку никакого отношения не имеет.
Зачем? ) Контейнер -- это совокупность однородных объектов.
Разница самих объектов может быть реализована полиморфизмом в рамках уже объектов и к списку никакого отношения не имеет.
Правильный лист не должен для использования его для произвольного класса требовать явной имплементации нового класса.
Поэтому правильная имплементация должна опираться на шаблоны.
Справедливости ради, я не уверен, что это реализуемо на представленном уровне шаблонов.
Но это на самом деле далеко не все проблемы в статье.
То, что предлагает TheXpert, кажется понятно.
Если я правильно уловил его идею, то все методы некоего абстрактного списка должны автоматом узнавать "свой" узел (это и есть полиморфизм).
В статье например есть пользовательские классы CiSingleList (Рис.9), CDoubleList (Рис.11), CiUnrollDoubleList (Рис.12), CiCircleDoubleList (Рис.13).
Так вот, в принципе все их можно запихнуть в один класс. Только придётся каждый метод кодировать так, чтобы он распознавал тип узла, с которым в конкретный момент времени имеет дело. А это потребует тоже ресурса... так что не всё так однозначно...
Это понятно, что конкретный список включает в свой состав однородные узлы. Я имел в виду, что связи между узлами в этом списке могут быть разными, что и требует разного типа списка для каждого типа узлов. Если создать один и тот же класс списка для узлов разного типа, то это было бы здорово... лично я сам пока не пробовал... надо подумать над высшим уровнем абстракции...
То, что предлагает TheXpert, кажется понятно.
Если я правильно уловил его идею, то все методы некоего абстрактного списка должны автоматом узнавать "свой" узел (это и есть полиморфизм).
В статье например есть пользовательские классы CiSingleList (Рис.9), CDoubleList (Рис.11), CiUnrollDoubleList (Рис.12), CiCircleDoubleList (Рис.13).
Так вот, в принципе все их можно запихнуть в один класс. Только придётся каждый метод кодировать так, чтобы он распознавал тип узла, с которым в конкретный момент времени имеет дело. А это потребует тоже ресурса... так что не всё так однозначно...
Что тут кодировать-то?
Первый класс, вторая четверть. К сожалению без посредника Community не обойтись, потому что MQL5 обладает крайне слабым контролем типов. Но имейся в распоряжении функция ClassToString, наподобии EnumToString() все можно было бы оргназиовать гораздо изящней и легче.