void* в Mql5

 
У меня тут небольшое затруднение возникло... компилятор ругается на неверное преобразование типов, помогите плиз
bool cmp_long(void *x,void *y)
  {
   long _x = (long)x;
  // return (long)x>(&long)y;
  }

Не получается из void* преобразовать к нужному типу. 
 

Это МТ5?

Если да, то как Вы собрались передавать в функцию значение типа void?

 
Sergey Savinkin:

Это МТ5?

Если да, то как Вы собрались передавать в функцию значение типа void?

Да, в Mql5 пытаюсь. Мне просто сортировку нужно сделать, я хочу сделать одну функцию 

typedef bool(*comparer)(void *x,void *y);

void sort(void*&arr[],comparer cmp);

И использовать ее для сортировки (нужно будет сортировать несколько видов структур)

 
И я же передавать хочуне void, а void*
 
Похоже проще всего будет сделать вот так:
#include <Generic\Interfaces\IComparer.mqh>
template<typename T>
void sort(T &arr[],IComparer<T>*cmp);
 
Andrey Azatskiy:
У меня тут небольшое затруднение возникло... компилятор ругается на неверное преобразование типов, помогите плиз

Не получается из void* преобразовать к нужному типу. 

В мкл же нет вроде указателей на простые типы, только на объекты.

И даже если бы были, вы не разыменуете указатель.

bool cmp_long(void *x,void *y)
{
    return *(long *)x > *(long *)y;
}
 
Andrey Azatskiy:

Да, в Mql5 пытаюсь. Мне просто сортировку нужно сделать, я хочу сделать одну функцию 

И использовать ее для сортировки (нужно будет сортировать несколько видов структур)

Наследуй структуры от CObject.

Перегружай функцию Compare()

В этом случае - сможешь сразу получать сортировку в массиве CArray

 
Благодарю всез за советы. В итоге оставил одну лишь функцию и пересмотрел приложение. Понадобилось после тчательного пересмотра сортировать только лишь одну структуру но по разным полям, а это можно и через enum сделать как в итоге и реализовал.