Синхронизация mql5 и c++ реализаций классов. - страница 9

 
fxsaber #:
Ну и передача массива в функцию.

С моими двумя можно так определять функцию

fun(ARRTYPE(double)& ARRNAME(v))

А const же вроде можно просто добавить?

fun(const ARRTYPE(double)& ARRNAME(v))
 
Aleksey Nikolayev #:

С моими двумя можно так определять функцию

А const же вроде можно просто добавить?

Да, так лучше. А вот как получать через указатель доступ к полю - не знаю.

 
Чет обновы gcc часто летят. Аудит кто-то делал? Визуал студио от микрософта 15го года добавляет перед мейном функцию с телеметрией.
 
G1G2G3 #:
Чет обновы gcc часто летят. Аудит кто-то делал? Визуал студио от микрософта 15го года добавляет перед мейном функцию с телеметрией.
Переходите на clang, который идёт на смену gcc. ROOT, например, на cling, который основан на clang. Правда, clang по номерам релизов уже обогнал gcc)
 

Получилось перегнать из MQL5 в C++ средней длины код - около шестисот строк. Пока главная проблема с обычными статическими массивами (похоже fxsaber именно их имел в виду назвав константными), поскольку в С++ их длина не передаётся в функцию автоматически. Для достаточно большого кода это будет уже мучением. Наверняка будут и другие проблемы.

Исходная идея начинает терять свою замечательность)

 
fxsaber #:

как получать через указатель доступ к полю

#ifdef __MQL5__
  #define PTR(NAME) (NAME)
#else // #ifdef __MQL5__
  #define PTR(NAME) (*(NAME))
#endif // #ifdef __MQL5__ #else

class A
{
public:
  A* a;
  int i;
};

void f()
{
  A* a = NULL;
  
  PTR(a).i = 1;
  PTR((A*)a).i = 1;
  PTR(PTR(a).a).i = 1;
}
 
Maxim Kuznetsov #:

никакой.

MQL5 - другой язык

У создателей языка другие представления: "Синтаксически язык программирования торговых стратегий MQL5 очень похож на язык программирования С++, за исключением некоторых возможностей"

Вопрос версии С++, взятой за основу, остаётся открытым.

 

Ещё есть отличие в поведении строк - в printf() можно передать только char* в C++. Можно конечно переопределить string как char*, но появляется предупреждение при присваивании такому стрингу константной строки. Предупреждение можно убрать, если делать преобразоване типа.

В общем, всё получается "на соплях" и легко разваливается при попытках преобразования достаточно объёмного кода. Но в отдельных случаях даёт интересные дополнительные возможности при отладке, поэтому понемногу продолжаю возиться.

 
Aleksey Nikolayev #:

У создателей языка другие представления: "Синтаксически язык программирования торговых стратегий MQL5 очень похож на язык программирования С++, за исключением некоторых возможностей"

Вопрос версии С++, взятой за основу, остаётся открытым.

Ну это либо с99, либо с11, либо с18(с17). Потому что массивы переменной длины стали доступны с 99. Видимо остальное вырезано, для более точного определения. Но возможно я не оч хорошо знаю mql.
 
Только я не согласен конечно с вашей постановкой задачи. Не вижу смысла в переносе кода в компилятор mql. А вот универсальные подходы к автоматическим кодировщикам с удовольствием бы поглядел. Возможно надо использовать готовое и не изобретать. А тензорфлоу смотрели?
Причина обращения: