Особенности языка mql5, тонкости и приёмы работы - страница 46

 

Ветка называется "Особенности языка mql5, тонкости и приёмы работы", но вместо этого уже 45 страниц идёт обсуждение торговых/тиковых операций и прочей хрени, которые касаются конкретно МТ5, а вовсе не языка программирования.  Так то тема могла быть действительно нужной и полезной для программистов, люди бы делились интересными фичами и конструкциями, но превратилась в очередную свалку мусора.

 
Alexey Navoykov:

Ветка называется "Особенности языка mql5, тонкости и приёмы работы", но вместо этого уже 45 страниц идёт обсуждение торговых/тиковых операций и прочей хрени, которые касаются конкретно МТ5, а вовсе не языка программирования.  Так то тема могла быть действительно нужной и полезной для программистов, люди бы делились интересными фичами и конструкциями, но превратилась в очередную свалку мусора.

К сожалению, да, так оно и есть. Вопросов и обсуждений тут не должно было быть вообще.
 
Alexey Navoykov:

Ветка называется "Особенности языка mql5, тонкости и приёмы работы", но вместо этого уже 45 страниц идёт обсуждение торговых/тиковых операций и прочей хрени, которые касаются конкретно МТ5, а вовсе не языка программирования.  Так то тема могла быть действительно нужной и полезной для программистов, люди бы делились интересными фичами и конструкциями, но превратилась в очередную свалку мусора.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: TypeToBytes

fxsaber, 2017.07.11 15:40

// Чтение/Запись private-полей простых структур

#include <TypeToBytes.mqh>

template <typename T>
struct STRUCT
{
private:
  T Data; // private-поле
  
public:
  T GetData( void ) const
  {
    return(this.Data);
  }
};

void OnStart()
{    
  STRUCT<int> Struct = {0};  
  
  _W(Struct) = 2;          // Write-доступ к private-полю
  Print(Struct.GetData()); // убедились штатно, что это так
  
  Print(_R(Struct)[0]);    // Read-доступ к private-полю
}
 
fxsaber:
А зачем вам нужен доступ к private-полю извне??  Это какой-то вид извращений?  )  Сначала объявить поле private, а потом пытаться доступиться к нему. Причём не только на чтение, но и на запись!  Мда... вот уж действительно "тонкости и приёмы работы" ))
 
Alexey Navoykov:
А зачем вам нужен доступ к private-полю извне??  Это какой-то вид извращений?  )  Сначала объявить поле private, а потом пытаться доступиться к нему. Причём не только на чтение, но и на запись!  Мда... вот уж действительно "тонкости и приёмы работы" ))

Это private-PR!

 
Внимание, господа программисты! У нас завёлся опасный хакер, взламывающий чужие классы и безжалостно меняющий там private-поля!  Будьте осторожны, берегите ваши классы.
 
// Объяснение, почему static-поля структур не являются на самом деле ее полями
// Поэтому структура может быть простой, даже если ее static-поле является объектом
struct STRUCT
{
  static string Str;
  int i;
};

string STRUCT::Str = NULL;

union UNION
{
  STRUCT Struct; // для сложной структуры была бы ошибка
  int i;
};

void OnStart()
{
  Print(sizeof(STRUCT)); // sizeof(int) == 4
}
 
fxsaber:

Это private-PR!

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

Кто-нибудь делал не затратную по ресурсам сортировку массива структур по любому (не string) заданному полю структуры?

Допустим, есть структура с тремя полями int, datetime и double, и есть массив, заполненный данными, состоящими из этой структуры. В каждой ячейке массива поля структуры заполнены.

Как отсортировать этот массив по любому из этих полей?

 
Artyom Trishkin:

Кто-нибудь делал не затратную по ресурсам сортировку массива структур по любому (не string) заданному полю структуры?

Допустим, есть структура с тремя полями int, datetime и double, и есть массив, заполненный данными, состоящими из этой структуры. В каждой ячейке массива поля структуры заполнены.

Как отсортировать этот массив по любому из этих полей?

Типа вот этого?

https://www.mql5.com/ru/code/9336

ArrayEx
ArrayEx
  • голосов: 4
  • 2009.11.19
  • Андрей
  • www.mql5.com
Библиотека реализует 3 основных функции работы с двумерными массивами: сортировка, группировка, выборка - по множественным критериям.
Причина обращения: