Есть ли план по улучшению mql для создания действительно универсального кода?
Например, в настоящее время невозможно создать контейнер, который можно использовать с базовым типом, простой структурой, объектами и указателями. Вы можете иметь либо базовый тип и указатели (с некоторыми приемами), либо структуру и объект.
template < typename T>
class Container
{
T data[];
int size;
public :
Container( void ) : size( 0 ) { ArrayResize (data,size, 100 ); };
~Container( void )
{
//for(int i=0;i<size;i++)// {// if(CheckPointer(data[i])==POINTER_DYNAMIC)// delete data[i]; // DOESN'T COMPILE : 'data' - object pointer expected// } // Can be solved with a dynamic_cast, but need a super class
};
//---void Add(T value) // DOESN'T COMPILE : 'POD' - objects are passed by reference only
{ // DOESN'T COMPILE : 'CObject' - objects are passed by reference only Plan.mq5 26 13ArrayResize (data,size+ 1 );
data[size]=value;
++size;
}
//---
T At( int i)
{
if (i< 0 && i>=size)
{
//T ret={}; // Can't be initialized ? => Warining : possible use of uninitialized variable 'ret'//return(ret);return ( NULL ); // DOESN'T COMPILE with POD : 'NULL' - parameter passed as reference, variable expected
}
return (data[i]);
}
};
Есть ли план по улучшению mql для создания действительно универсального кода?
Например, в настоящее время невозможно создать контейнер, который можно использовать с базовым типом, простой структурой, объектами и указателями. Вы можете иметь либо базовый тип и указатели (с некоторыми приемами), либо структуру и объект.
Использование :
Да, планируются
Но пока на уровне обсуждения, планируем добавить условную компиляцию в зависимости от типа T, используя которую, можно будет включать/отключать части шаблонного класса, что-то напоминающее if constexpr из С++
Так же планируем добавить различные __builtin функции (например позволяющие определить является T классом или нет), которые можно будет использовать для условной компиляции
Но пока на уровне обсуждения, планируем добавить условную компиляцию в зависимости от типа T, используя которую, можно будет включать/отключать части шаблонного класса, что-то напоминающее if constexpr из С++
Данная вещь безусловно будет очень полезна. Но в рассматриваемом случае всё гораздо банальней: нужно просто разрешить передачу объектов по значению. Почему в MQL до сих пор действует это искусственное ограничение? Ведь объекты можно свободно возвращать из функции, так почему их нельзя передать в функцию тем же путём?
Есть ли план по улучшению mql для создания действительно универсального кода?
Например, в настоящее время невозможно создать контейнер, который можно использовать с базовым типом, простой структурой, объектами и указателями. Вы можете иметь либо базовый тип и указатели (с некоторыми приемами), либо структуру и объект.
Все можно реализовать средствами MQL. Кроме части, где контейнер отвечает за результат инициализации объекта по умолчанию. За инициализацию по умолчанию должен отвечать сам объект, а не контейнер.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
у меня на открепленном графике в панели аналитических инструментов отсутствуют временные зоны фибоначчи! другие инструменты - присутствуют.
Очевидно, что нужно настроить внешний вид панели. Справка терминала в помощь.
настроил.
очевидно, что все аналитические инструменты, присутствующие в корневом окне, должны без потерь дублироваться в открепленных окнах.
например, я откреплю 6 окон. и мне в каждом потом настраивать панель аналитических инструментов?..
ctrl+z не отменяет удаление коридоров.
у меня смещение ("плавающее", а не указанное в настройках) сбивается на (открепленных) графиках при смене профиля туда-обратно.
typedef пока только в планах
namespace в реализации
@Ilyas @Slava
Есть ли план по улучшению mql для создания действительно универсального кода?
Например, в настоящее время невозможно создать контейнер, который можно использовать с базовым типом, простой структурой, объектами и указателями. Вы можете иметь либо базовый тип и указатели (с некоторыми приемами), либо структуру и объект.
Использование :
@Ilyas @Slava
Есть ли план по улучшению mql для создания действительно универсального кода?
Например, в настоящее время невозможно создать контейнер, который можно использовать с базовым типом, простой структурой, объектами и указателями. Вы можете иметь либо базовый тип и указатели (с некоторыми приемами), либо структуру и объект.
Использование :
Да, планируются
Но пока на уровне обсуждения, планируем добавить условную компиляцию в зависимости от типа T, используя которую, можно будет включать/отключать части шаблонного класса, что-то напоминающее if constexpr из С++
Так же планируем добавить различные __builtin функции (например позволяющие определить является T классом или нет), которые можно будет использовать для условной компиляции
Воспользуюсь моментом открытости. Возможно ли в MQL сделать так, чтобы функция возвращала разные типы?
Результатом этого выражения всегда является string. А нужно, чтобы был либо double, либо string, в зависимости от type.
Воспользуюсь моментом открытости. Возможно ли в MQL сделать так, чтобы функция возвращала разные типы?
Результатом этого выражения всегда является string. А нужно, чтобы был либо double, либо string, в зависимости от type.
К сожалению нет, тип тернарного оператора определяется как старший из двух вариантов.
Иначе получается, что типизация должна происходить на этапе выполнения, а это не поддерживается в MQL
Но пока на уровне обсуждения, планируем добавить условную компиляцию в зависимости от типа T, используя которую, можно будет включать/отключать части шаблонного класса, что-то напоминающее if constexpr из С++
Данная вещь безусловно будет очень полезна. Но в рассматриваемом случае всё гораздо банальней: нужно просто разрешить передачу объектов по значению. Почему в MQL до сих пор действует это искусственное ограничение? Ведь объекты можно свободно возвращать из функции, так почему их нельзя передать в функцию тем же путём?
@Ilyas @Slava
Есть ли план по улучшению mql для создания действительно универсального кода?
Например, в настоящее время невозможно создать контейнер, который можно использовать с базовым типом, простой структурой, объектами и указателями. Вы можете иметь либо базовый тип и указатели (с некоторыми приемами), либо структуру и объект.
Все можно реализовать средствами MQL.
Кроме части, где контейнер отвечает за результат инициализации объекта по умолчанию.
За инициализацию по умолчанию должен отвечать сам объект, а не контейнер.
Воспользуюсь моментом открытости. Возможно ли в MQL сделать так, чтобы функция возвращала разные типы?
Результатом этого выражения всегда является string. А нужно, чтобы был либо double, либо string, в зависимости от type.
Предоставьте, пожалуйста, пример, где без возвращения разных типов ни как не обойтись.