Новая версия платформы MetaTrader 5 build 6230: больше возможностей AI - страница 23

Aleksey Vyazmikin #:
Меняю эндпоинт в ME, сохраняет изменение, после первого же запроса в чат возвращает на прошлое значение api1.inferdeck.net
Уже исправили, api1 работает.

Пример (https://www.mql5.com/ru/book/oop/structs_and_unions/structs_composition) больше работать не будет?

struct Inclosure
{
   double X, Y;
};
struct Main3 : Inclosure
{
   int code;
};

int OnInit()
  {
        Main3 m3;
        Inclosure in = {10, 100};
        m3 = in; // cannot convert parameter 'Inclosure' to 'const Main3&'
        // call resolves to 'void Main3::operator=(const Main3&)' instead of 'void Inclosure::operator=(const Inclosure&)' due to new rules of method hiding
  }
Учебник по MQL5: Компоновка и наследование структур / Объектно-Ориентированное Программирование
Учебник по MQL5: Компоновка и наследование структур / Объектно-Ориентированное Программирование
  • www.mql5.com
Структуры могут иметь в качестве своих полей другие структуры. Например, определим структуру Inclosure и используем этот тип для поля data в...
Renat Fatkhullin #:
Уже исправили, api1 работает.
Спасибо за информирование.
Botan626 # :

проблемы с котировками Rub пар на демо сервере MQ

Проблема решена.
trader6_1 #:

Пример (https://www.mql5.com/ru/book/oop/structs_and_unions/structs_composition) больше работать не будет?

Неуверен по поводу побочных эффектов при других сценариях использования.

struct Main3 : Inclosure
{
   using Inclosure::operator=;
   int code;
};
Vladislav Boyko #:

Спасибо! Пробовал разные using но до этого не догадался...

Первый запуск скрипта после рестарта терминала (build 6291).

Откуда известно про 1212? Это значение будет присвоено только после вызова print(). Это оптимизация какая-то?

struct Inclosure
  {
   double X, Y;
  };

struct Main3 : Inclosure
  {
   using Inclosure::operator=;
   int code;
   void print() { PrintFormat("x %.2f, y %.2f, code %i", X, Y, code); }
  };

void OnStart()
  {
   Main3 m3;
   Inclosure in = {10, 100};
   m3 = in;
   m3.print();
   m3.code = 1212;
  }
Vladislav Boyko #:

Первый запуск скрипта после рестарта терминала (build 6291).

Откуда извесно про 1212? Это значение будет присвоено только после вызова print(). Это оптимизация какая-то?

Без оптимизации: x 10.00, y 100.00, code 0
С оптимизацией: x 10.00, y 100.00, code 1212

Vladislav Boyko # :

Первый запуск скрипта после рестарта терминала (build 6291).

Откуда извесно про 1212? Это значение будет присвоено только после вызова print() . Это оптимизация какая-то?

Параметр m3.code не инициализируется в момент вызова функции print() и может принимать любое значение.

Без оптимизации:

void OnInit()
  {
   Main3 m3;
   Inclosure in = {10, 100};
   m3 = in;
   Print("before 1212: ", m3.code);
   m3.code = 1212;
   Print("after 1212: ", m3.code);
  }

before 1212: 1212

after 1212: 1212