Массив из своих объектов.

 

Собственно есть свой класс, описывающий определенный объект.

Не нашел в мануале как создать из этих объектов массив.

Или придется писать свои класс, которые будет данный функционал реализовывать ( доступ к объекту массива, поиск, сортировку и т.д.)

 
IlyaKhvostov:

Собственно есть свой класс, описывающий определенный объект.

Не нашел в мануале как создать из этих объектов массив.

Или придется писать свои класс, которые будет данный функционал реализовывать ( доступ к объекту массива, поиск, сортировку и т.д.)

Создайте массив классов... или указателей на них...

или я не понял, что Вы хотели сказать...

 

это действительно кажется очень странным.

человек знает что такое объекты и классы и не знает что такое массив...

где подвох?


 
sergeev:

это действительно кажется очень странным.

человек знает что такое объекты и классы и не знает что такое массив...

где подвох?


Подвох может быть лишь в случае если объекты настолько разношёрстные что объединить их одним предком нет возможности, а доступ к указателям нужен именно по индексу массива. "я так думаю...(с) Мимино"

ЗЫ если других советов не будет то я скажу так, даже если общих методов у объектов нет то всё равно следует описать всю разношёрстную массу методов всех объектов в классе предке в виде виртуальных пустышек, тогда можно будет воспользоваться парадигмой наследования.

 

вопрос конкретный: "Собственно есть свой класс, описывающий определенный объект."

по контексту - класс один. значит массив надо этого класса.

где подвох? :)

 
IlyaKhvostov:

Собственно есть свой класс, описывающий определенный объект.

Не нашел в мануале как создать из этих объектов массив.

Сужу по себе. Если создан собственный класс (например, C_Own), то массив определяется обычно:

C_Own  array_Own[]   //динамический массив
C_Own  array_Own[10] //статический массив
 
Вы об этом спрашивали?
 
IlyaKhvostov:

Собственно есть свой класс, описывающий определенный объект.

Не нашел в мануале как создать из этих объектов массив.

Или придется писать свои класс, которые будет данный функционал реализовывать ( доступ к объекту массива, поиск, сортировку и т.д.)

Самм массив можно указать как простой динамик/статик, одноранговый / многоранговый - это на выбор.

Сортировку, поиск и прочее скорей всего придется самому кодить. В виде отдельных функций или как специализированный класс (тоже на ваш выбор).

Я как понял вам нужен функционал позволяющий добавлять, сортировать, искать и удалять объекты из массива имеющего пользовательский тип?

 

Interesting:

Самм массив можно указать как простой динамик/статик, одноранговый / многоранговый - это на выбор.

Сортировку, поиск и прочее скорей всего придется самому кодить. В виде отдельных функций или как специализированный класс (тоже на ваш выбор).

Я как понял вам нужен функционал позволяющий добавлять, сортировать, искать и удалять объекты из массива имеющего пользовательский тип?

 Я раньше в C# кодил. Так там было все просто. Создал Arraylist и в него пихаешь объекты любых типов, в итоге, и доступ по индексу есть, и поиск, и сортировка (если докрутить сравнивалку).

А тут как-то неясно.)

Ну вот есть у меня класс CoolCandle, описывающий свечи, позволяющий делать с ними различные операции и т.д.

Ну соответственно, я хочу сделать массив из кучи объектов типа CoolCandle, чтоб потом с этим массивом работать.

Ну вот я написал, например:

CoolCandle array[];

Как дальше данные в него добавлять-то?

В шарпе было бы, в цикле естественно:

array.Add(object);

Тут пробовал присваивать в цикле, что-то вроде:

   void OnStart()
  {
   CoolCandle array[1000];    //массив объектов типа CoolCandle
   CoolCandle candle;        //объект типа CoolCandle
   MqlRates rates[];         //масссив объектов типа MqlRates
   ArraySetAsSeries(rates,true);
   int copied=CopyRates(Symbol(),PERIOD_D1,0,1000,rates);//записываем в rates исторические данные
      for (int i=0;i<1000;i++)
      {    
         candle.SetFields(rates[i]); //вызов метода класса CoolCandle для установке полей и свойств объекта Candle
         array[i]=candle; //пишем в массив объект CAndle 
      }   
  }

Получается только если CoolCandle, то есть мой объект, является структурой, а не классом. Или в MQL5 так и сделано, что в массивы только структуры можно вносить?



Yedelkin:

Сужу по себе. Если создан собственный класс (например, C_Own), то массив определяется обычно:

Вы об этом спрашивали?

Об этом. То есть почти об этом. Массив-то я создал, а данные в него как запихнуть?

 
IlyaKhvostov::

Получается только если CoolCandle, то есть мой объект, является структурой, а не классом. Или в MQL5 так и сделано, что в массивы только структуры можно вносить?


От чего же нельзя, можно. Все можно если сильно захотеть.

Есть в стандартной библиотеке класс один, называется он CList (да и CArrayObj для полноты картины стоит посмотреть), очень советую с ним познакомиться. Даже если он вам не подойдет в нем есть много чего полезного. 

Да и со стандартной библиотекой стоит получше познакомиться, хороший совет для всех (хоть я ее сам не очень люблю).

 
IlyaKhvostov:

  Массив-то я создал, а данные в него как запихнуть?

Может, попробовать в таком случае списки? Про стандартную библиотеку Interesting уже упомянул. Посмотрите также статьи  Взгляни на рынок через готовые классы   (раздел " Манипуляция объектами в списке - стандартный класс CList"),  Когда нужно использовать указатели в MQL5 (раздел "Связанный список"), соответствующие разделы Справочника. В разделе форума Статьи имеются и другие статьи на тему ООП, все не упомнишь.
Причина обращения: