Да, в 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* преобразовать к нужному типу.
У меня тут небольшое затруднение возникло... компилятор ругается на неверное преобразование типов, помогите плиз
Не получается из void* преобразовать к нужному типу.
В мкл же нет вроде указателей на простые типы, только на объекты.
И даже если бы были, вы не разыменуете указатель.
bool cmp_long(void *x,void *y) { return *(long *)x > *(long *)y; }
Andrey Azatskiy:
Да, в Mql5 пытаюсь. Мне просто сортировку нужно сделать, я хочу сделать одну функцию
И использовать ее для сортировки (нужно будет сортировать несколько видов структур)
Наследуй структуры от CObject.
Перегружай функцию Compare()
В этом случае - сможешь сразу получать сортировку в массиве CArray
Благодарю всез за советы. В итоге оставил одну лишь функцию и пересмотрел приложение. Понадобилось после тчательного пересмотра сортировать только лишь одну структуру но по разным полям, а это можно и через enum сделать как в итоге и реализовал.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не получается из void* преобразовать к нужному типу.