Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я не понимаю этих вещей
Как работают эти ссылки ? Зачем они ? Может кто нить на пальцах объяснить или показать пример ?
Почти каждый кто заходил тему написал, что они используются для связывания объектов в списки.
Как работают эти ссылки ? Зачем они ? Может кто нить на пальцах объяснить или показать пример ?
Да тут уже не раз объяснено - это элементы двусвязного списка. Каждый объект списка - указывает на следующий объект в списке, и на предыдущий объект.
Объявляешь объект CList. И пихаешь в него объекты CObject с помощью функции CList:: Add(). В этой функции каждый объект "цепляется" к имеющимся. После того, как ты все нужные объекты передал в CList - ты можешь запросить объекты (узлы) списка с помощью соответствующих функций. А получив один из объектов - сразу получить и следующий (или предыдущий), используя вот эти самые указатели.
Собственно сами указатели заполняются именно в функции CList::Add()
Лично я редко использую списки, мне больше нравится CArrayObj. Но, пару раз были задачи, для которых список был более удобен.Да тут уже не раз объяснено - это элементы двусвязного списка. Каждый объект списка - указывает на следующий объект в списке, и на предыдущий объект.
Объявляешь объект CList. И пихаешь в него объекты CObject с помощью функции CList:: Add(). В этой функции каждый объект "цепляется" к имеющимся. После того, как ты все нужные объекты передал в CList - ты можешь запросить объекты (узлы) списка с помощью соответствующих функций. А получив один из объектов - сразу получить и следующий, используя вот эти самые указатели.
Собственно сами указатели заполняются именно в функции CList::Add()
Большое спасибо!
Владимир, посмотрите в Стандартную библиотеку, как используется CList.
Ещё кто-то писал статью про списки, не помню кто...
https://www.mql5.com/ru/articles/709
И, кстати, CObject используется не только в списках, но и других контейнерах, например CArrayObj.
Имхо, это не правильная концепция. Если пользователь захочет поместить один объект одновременно в несколько списков (почему бы и нет?), то выйдет облом...
Стесняюсь спросить, а откуда такая уверенность и безапелляционность? Кто мешает один и тот же объект поместить в разные списки?
Тогда на кой разработчик реализовал метод CList::Freemode(), не подскажите?
Fremode - для уничтожен объекта при удалении его из списка.
Смотрим метод Add:
Для использования множественного нужны грамотные программисты, которых тут мало. Потому что можно такого наворотить..
Стесняюсь спросить, а откуда такая уверенность и безапелляционность? Кто мешает один и тот же объект поместить в разные списки?
Тогда на кой разработчик реализовал метод CList::Freemode(), не подскажите?
Нет.
Один и тот же объект нельзя ставить в разные списки, потому, что связность списка определяется как раз цепочкой указателей Next-Previous в самих узлах списка. Если мы добавим узел в один список - то его указатели - будут указывать на узлы этого списка, но как только добавим этот же объект в другой список - его указатели будут переписаны в соответствии с этим новым списком, а информация о старом списке - потеряется.
FreeMode - это селектор метода удаления. Определяет, кто ведает удалением собственно самих объектов. То ли их будет удалять сам список, то ли пользователь.
К смарт-поинтерам у меня неоднозначное отношение - мне кажется, их использование оправдано весьма нечасто. А вот код они усложняют очень заметно. Поэтому, я сперва было хотел себе такой класс сделать, но, идея на уровне идеи и осталась...