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

 
Sergey Gridnev #:
Тогда, похоже, никак.
Но в тоже Java вызов конструктора суперкласса возможен только первой командой в конструкторе потомка, так что ситуация аналогична - нельзя в потомке произвести вычисление параметров конструктора родительского класса.

Т.е., для родительских классов, если мы не планируем создавать их объекты, фактически имеет смысл только конструктор по умолчанию (или выполняющий, вопреки документации, его роль конструктор со всеми параметрами по умолчанию)?

 
JRandomTrader #:

Т.е., для родительских классов, если мы не планируем создавать их объекты, фактически имеет смысл только конструктор по умолчанию (или выполняющий, вопреки документации, его роль конструктор со всеми параметрами по умолчанию)?

На случай, если в потомке надо определять параметры для инициализации родителя, я бы делал метод инициализации в родительском классе, объявив его как protected.
 
Sergey Gridnev #:
На случай, если в потомке надо определять параметры для инициализации родителя, я бы делал метод инициализации в родительском классе, объявив его как protected.

Собственно, так и делал.

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

[Удален]  
JRandomTrader #:

Это я что-то не понимаю, или тут действительно что-то не так?

Результат:

Конструктор с параметрами по умолчанию используется как конструктор по умолчанию (первый вызов A::A(int)), хотя в документации сказано, что это не так:

"Конструктор, все параметры которого имеют значения по умолчанию, не является конструктором по умолчанию."  https://www.mql5.com/ru/docs/basis/types/classes#default_constructor

Второй вызов A::A(int) (из B::B(int) ) устанавливает значение a1, которое после "исчезает".

Когда выполняется тело конструктора класса B, конструктор его родительского класса уже отработал.

Если Вы не вызываете его явно в списке инициализации, то используется конструктор по умолчанию.

B::B( int b )
{
   A( b );
}

Этот код равен этому:

B::B( int b ) : A()
{
   A( b );
}

В теле конструктора класса B Вы создаёте временный объект класса A, который уничтожается сразу при выходе из конструктора.

 
JRandomTrader #:

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

Согласен.
 
Koldun Zloy #:

Когда выполняется тело конструктора класса B, конструктор его родительского класса уже отработал.

Если Вы не вызываете его явно в списке инициализации, то используется конструктор по умолчанию.

Этот код равен этому:

В теле конструктора класса B Вы создаёте временный объект класса A, который уничтожается сразу при выходе из конструктора.

Дело в том, что у него в классе A есть конструктор, а это означает, что конструктора по умолчанию в классе A нет. Поэтому результат поведения, который был показан выше, ошибочен. По-хорошему, компилятор должен был выдать ошибку.
 
Sergey Gridnev #:
Дело в том, что у него в классе A есть конструктор, а это означает, что конструктора по умолчанию в классе A нет. Поэтому результат поведения, который был показан выше, ошибочен. По-хорошему, компилятор должен был выдать ошибку.
Великая и ужасная тема. Правила инициализации объектов в С++))) Ну да, A() = delete явно надо указывать, иначе компилятор (я сейчас не про mql, хотя про него тоже) при выборе конструктора для A, абсолютно законно выбирает параметрический, если в нем все параметры имеют значения по умолчанию) 
 
Dmitriy Skub #:

Я дико извиняюсь, а что за хреновина с версией 3660 (судя по названию файла)? Никогда такого не было...

Изредка из-за полиморфной защиты какие-то сигнатуры файла могут быть схожими с вредителями.

Обратите внимание, что ругался просто на попытку сохранить шифрованный и подписанный пакет обновления (его нельзя запустить), а не при запуске распакованного exe файла. То есть, это не реакция на исполнимый файл.

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

Кроме того, все выполняемые файлы подписаны нашей Code Signing цифровой подписью

В общем, как обычно, ложная тревога.

 
Renat Fatkhullin #:

Изредка из-за полиморфной защиты какие-то сигнатуры файла могут быть схожими с вредителями.

Обратите внимание, что ругался просто на попытку сохранить шифрованный и подписанный пакет обновления (его нельзя запустить), а не при запуске распакованного exe файла. То есть, это не реакция на исполнимый файл.

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

Кроме того, все выполняемые файлы подписаны нашей Code Signing цифровой подписью

В общем, как обычно, ложная тревога.

Понято. Уже обновился на 3661, там такого сообщения нету.
 

Почему администрация не участвует в ветке про фриланс и игнорирует озвученную мной проблемы, имеющие реальный прецедент?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Что думают о сервисе Фриланс разработчики на MQL5

Aleksey Vyazmikin, 2023.03.16 13:03

По факту в сервисе Фриланс договор разбит на три части:

1. Обязанности заказчика в ТЗ.

2. Обязанности Исполнителя и Заказчиках в "Правила использования сервиса "Фриланс"".

3. В условиях оплаты и сроках исполнения заказа.

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

Пункт 3 - оплата и сроки исполнения - является существенной частью договора, и не может в одностороннем порядке меняться.

В моём случае, это существенно ухудшает права Исполнителя, так как согласно заключенному договору срок оказываемых услуг ограничен именно пунктом 3.

Считаю, что факт возможности изменения условий Договора в одностороннем порядке нарушает права Исполнителя, что дискредитирует данный Сервис Фриланс.