Новая версия платформы MetaTrader 5 build 2085: Интеграция с Python и массовые улучшения в тестере стратегий - страница 41

 
Комментарии, не относящиеся к этой теме, были перенесены в "Как проверить свечи".
 

Ошибка компилятора:

struct B;

struct A
{
  int a;
  
  B toB();  // undefined struct 'B' cannot be used
};

struct B : A { };

B A::toB() { B b;  b.a=a;  return b; }

Появилась в последних билдах (примерно с 2057), раньше всё было нормально.  В C++ тоже всё ок.

 
Alexey Navoykov:

Ошибка компилятора:

Появилась в последних билдах (примерно с 2057), раньше всё было нормально.  В C++ тоже всё ок.

поддерживаю, желательно вернуть данный функционал, раньше было по привычке из С++ таким образом декларировать объекты, а теперь приходится делать импорты, что иногда приводит к перекрестным ссылкам

 

Удалось зафиксировать пропажу объектов, о которой сообщал выше.




Скажите, что можно нажать или сделать в терминале, чтобы пропало сразу два невыделанных объекта? Я показал, что индикаторов в окне нет, советников нет. Из списка оба объекта пропадают безвозвратно. Видно, что пропали именно те объекты, которые были в работе только что.

 

Окно алертов недоработано. При растягивании окна в ширину все колонки растягиваются пропорционально, что для первых 2 столбцов бессмысленно и отнимает место у важного 3-го столбца. Надо бы сделать автоматическое масштабирование для первых двух. В крайнем случае - добавить контекстное меню и отключаемую опцию Авторазмер, как в других окнах.

PS. Также мне кажется, что верхняя часть окна с последним сообщением имеет избыточную высоту. Как и размер колокольчика.

 

Ранее я уже неоднократно обращал внимание на отсутствие конструктора копирования по умолчанию для классов. Что естественно вызывает большие неудобства.  При том что у структур такой конструктор имеется (об этом я писал здесь). Однако нижеследующий код вызывает непонятки:

struct A { char a; };

A a;

A b(a); // Нормально

struct B
{ 
  A _a;
  B() : _a(a) { } // '_a' - constructor not defined
};

В одних случаях этот конструктор работает, в других нет.

В общем желательно бы навести порядок с этим. И особенно для классов нужен конструктор. Там он гораздо важнее, чем для структур.

 
Alexey Navoykov:

Ранее я уже неоднократно обращал внимание на отсутствие конструктора копирования по умолчанию для классов. Что естественно вызывает большие неудобства.  При том что у структур такой конструктор имеется (об этом я писал здесь). Однако нижеследующий код вызывает непонятки:

В одних случаях этот конструктор работает, в других нет.

В общем желательно бы навести порядок с этим. И особенно для классов нужен конструктор. Там он гораздо важнее, чем для структур.

опять вы со своим прежним требованием )) обоснуйте его необходимость кроме вашего хочу и не из гипотетического примера, а из реального

 
Konstantin:

опять вы со своим прежним требованием )) обоснуйте его необходимость кроме вашего хочу и не из гипотетического примера, а из реального

Обосновывать то, что является обыденной вещью?  Может ещё обосновать, зачем нужен дефолтный конструктор? Зачем нужен дефолтный оператор копирования?  Зачем нужен виртуальный деструктор?  Что ещё вам неясно?

Давайте может лучше вы сначала обоснуете, почему это НЕ надо?

 
Alexey Navoykov:

Обосновывать то, что является обыденной вещью?  Может ещё обосновать, зачем нужен дефолтный конструктор? Зачем нужен дефолтный оператор копирования?  Зачем нужен виртуальный деструктор?  Что ещё вам неясно?

Давайте может лучше вы сначала обоснуете, почему это НЕ надо?

да легко - обновление повлечет за собой новые баги, после чего приходится искать почему перестал работать тот или иной алгоритм, в качестве примера пролистайте ветки форума включая и эту

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

 
Konstantin:

да легко - обновление повлечет за собой новые баги, после чего приходится искать почему перестал работать тот или иной алгоритм, в качестве примера пролистайте ветки форума включая и эту

Т.е. по вашему вообще ничего не надо делать?  Ни язык, ни терминал улучшать не надо?  А то вдруг баги видите ли... Железный аргумент.

сложный объект входящий в данный класс или структуру вы простым копированием не скопируете так, как необходимо в каждом конкретном случае, где то достаточно получить копию указателя, кому то копию всех членов, тут не получится универсального решения

Это уже наверное мне виднее, скопирую я его или нет?  Чем по вашему отличатся логика работы неявного оператора= ?  Там те же самые указатели могут быть. Или его что тоже надо запретить?  Если вы что-то не используете или не умеете использовать, то это ещё не значит, что оно не нужно другим.  Я уже не первый кстати,  кто поднимаю эту тему.
Причина обращения: