Ошибки, баги, вопросы - страница 3484

 

A100 #:

struct A { int a; };
struct B : A {
    B() {}
    B( const B& b ) : A(b) {} //нормально
    B( const B& b ) : a(1) {} //Error: 'a' - parent member initialization not allowed
};

Один же хрен, инициализация родителя в списке инициализации. Или как по вашему?

Вместо явной инициализации члена у вас инициализация всего родителя, которая приведет к инициализации его членов. Собственно, значение члена родителя вы печатаете потом в журнал, ожидая, что он будет инициализирован вопреки требованиям документации.

Да, ошибки компиляции нет. Вы ошибку добиваетесь?

A100 #:
Нелишним будет провести аттестацию Исполнителей сервиса Фриланс

Вы уже определитесь, забанить меня или аттестацию😄

В любом случае, ваше мнение важно для вас😄

 
Valeriy Yastremskiy #:

мистика))) лан, будем привыкать) не критично)

Зависит от масштаба страницы в браузере

 
Artyom Trishkin #:

Зависит от масштаба страницы в браузере

ничего не менялось, мистика)))

 
Vladislav Boyko #:
Один же хрен, инициализация родителя в списке инициализации. Или как по вашему?
Нет. Хрен не один.
Это вызов конструктора родительского класса взамен конструктора по умолчанию. Конструкция легальна.
https://www.mql5.com/ru/docs/basis/types/classes
 
Vladislav Boyko #:

Один же хрен, инициализация родителя в списке инициализации. Или как по вашему?

Это явный вызов конструктора копирования. Так, что тут должно быть как в той присказке: "Вы либо трусы оденьте (подать сюда неявно созданный, правильно работающий конструктор копирования), либо крестик снимите (ошибка компиляции тогда должна быть и кошерное покаяние в документации, как так получилось, что нельзя (ну ни разу не поверю) реализовать)".

 
fxsaber #:

Просьба поделиться скринами панельки Тестера.

Хочется понять, зависят ли ее размеры от конфигурации ОС. Спасибо.

Стоит scaling 125%, может стоять больше, вплоть до 175% штатно и 500% костыльно, если память не изменяет. Лично мне пришлось на 600->700 заменить, заработало.


for (int X = 300; (X <= 600) && !MTTESTER::GetJournalItemCount(); X += 50)

И даже если не выбрана вкладка журнала такой код, как показывается практика, может выйти на первой же итерации.

 
Sergey Gridnev #:
Нет. Хрен не один.
Это вызов конструктора родительского класса взамен конструктора по умолчанию. Конструкция легальна.
https://www.mql5.com/ru/docs/basis/types/classes
Vladimir Simakov #:

Это явный вызов конструктора копирования. Так, что тут должно быть как в той присказке: "Вы либо трусы оденьте (подать сюда неявно созданный, правильно работающий конструктор копирования), либо крестик снимите (ошибка компиляции тогда должна быть и кошерное покаяние в документации, как так получилось, что нельзя (ну ни разу не поверю) реализовать)".

Я понял, спасибо!


Тогда можно объявить конструктор копирования и все работает

struct A
  {
   int m_a;
   A(const A& a) : m_a(a.m_a) {}
   A() {}
  };

struct B : A
  {
   B() {}
   B(const B& b) : A(b) {}
  };

void OnStart()
  {
   B b1;
   b1.m_a = 1;
   B b2 = b1;
   Print(b2.m_a);
  }
 
traveller00 #:

Стоит scaling 125%, может стоять больше, вплоть до 175% штатно и 500% костыльно, если память не изменяет. Лично мне пришлось на 600->700 заменить, заработало.

И даже если не выбрана вкладка журнала такой код, как показывается практика, может выйти на первой же итерации.

Спасибо, буду править.

 

Поднимаю.

 
Vladislav Boyko #:

Тогда можно объявить конструктор копирования и все работает


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

https://www.mql5.com/ru/forum/1111/page3482#comment_52121647