На данный момент сделать это просто не получится.
Обратитесь сюда.
- 2017.12.07
- www.mql5.com
Спасибо за ответ!
Именно туда я и обратился, и там написано "...могут хранить пользовательские типы данных". Что же имелось в виду?
CQueue не принимает мой тип данных struct SData.
Пришлось сделать массив типа int и хранить в нем индексы массива struct SData.
Интересно, было ли другое решение?
Я без понятия как устроены коллекции из СБ, но в свой контейнер могу положить ссылки на объекты. Так что вопрос: что будет если сделать struct классом с публичными членами и подсунуть в коллекцию из СБ?
class SData { public: ulong Ticket; double Price; }; void test() { RubbArray<SData *> xxx; SData data = {1, 0.5}; xxx << &data; }
Я без понятия как устроены коллекции из СБ, но в свой контейнер могу положить ссылки на объекты. Так что вопрос: что будет если сделать struct классом с публичными членами и подсунуть в коллекцию из СБ?
Очевидно, он будет работать с СБ;)
CQueue не принимает мой тип данных struct SData.
Со структурами ни Generic, не CObject не работает.
Интересно, было ли другое решение?
Было. Нужно было изменить struct на class
на самом деле реализация вызывает эээ как минимум вопросы, даже не касаясь нутра.
зачем нужны шаблонные контейнеры которые не поддерживают целую прослойку типов языка?
это уже вторая попытка реализации контейнеров от МК, и вторая комом.
на самом деле реализация вызывает эээ как минимум вопросы, даже не касаясь нутра.
зачем нужны шаблонные контейнеры которые не поддерживают целую прослойку типов языка?
это уже вторая попытка реализации контейнеров от МК, и вторая комом.
Здесь вопрос еще и в том, а потянет ли сам язык такую универсальность.
Здесь вопрос еще и в том, а потянет ли сам язык такую универсальность.
Вот такой пример со своими подпорками у меня получилось скомпилить
#include <generic/queue.mqh> struct SData { ulong Ticket; double Price; bool operator == (const SData& other) const { return other.Ticket == Ticket && other.Price == Price; } }; void test() { CQueue<SData> xxx; SData data = {1, 0.5}; xxx.Add(data); } void OnStart() { }так что думаю можно допилить напильником, даже с учетом нативных структур, у которых нельзя определить оператор ==
Вот такой пример со своими подпорками у меня получилось скомпилить
так что думаю можно допилить напильником, даже с учетом нативных структур, у которых нельзя определить оператор ==Генерик измененный по всей видимости? У меня на стандартном не компилится.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа, подскажите, пожалуйста, можно ли создать объект CQueue, который работал бы моим типом данных, например с таким:
или CQueue будет работать только со стандартными типами (int, double и пр.)?