Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Справку читайте, конкретно
Надо получить указатель на экземпляр вашего MyClass и далее с ним работать
С Вашей помощью все получилось. Спасибо!
Странно, что не сделали это через operator[]. Он же там напрашивается!
Странно, что не сделали это через operator[]. Он же там напрашивается!
Тогда нужно будет следить еще и за этим массивом ( operator[] ), используя ArrayCopy - для смещения при удалении элемента, ArrayResize - для изменения размера этого массива, а так мы просто опериуем указателями на обьеты.
если я не прав поправьте.
если я не прав поправьте.
В Include\Arrays\List.mqh сделать правку
И тогда код станет таким
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
массив экземпляров класса - правильное удаление элемента
Tango_X, 2017.07.07 09:09
В Include\Arrays\List.mqh сделать правку
И тогда код станет таким
Для меня конечно это все новое - но по логике не вижу разницы
между
Arr=MyList.GetNodeAtIndex(i);и
Arr=MyList[i];В Include\Arrays\List.mqh сделать правку
И тогда код станет таким
Да, так красивше. Только править list.mqh нельзя, при первом обновлении терминала файл перепишется. Надо наследоваться.
Странно, что не сделали это через operator[]. Он же там напрашивается!
CList писали давно. Тогда ещё нельзя было так делать :)
#include <Arrays\ArrayObj.mqh> template<typename T> class objvector : public CArrayObj { public: T operator[](const int index) const { return (T)At(index); } };#include <Arrays\objvector.mqh> class MyClass : public CObject { protected: int m_index; public: MyClass(int index):m_index(index){} MyClass* Print() {::Print ("index = "+string(m_index));return &this;} MyClass* Alert() {::Alert ("index = "+string(m_index));return &this;} MyClass* Comment(){::Comment ("index = "+string(m_index));return &this;} }; void OnStart() { objvector<MyClass*> array; for(int i=0;i<5;i++) array.Add(new MyClass(i)); array.Delete(2); for(int i=0;i<array.Total();i++) array[i].Print().Alert().Comment(); }Спасибо!