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

 
в старом добром Metaeditor'е  ч е т в е р т о й  версии кнопка Compile компилировала только текущий файл. В пятой версии комплируется весь проект 
 

сайт сломали

невозможно теперь с Андроида исходники в КБ читать, открывает по клику на "Просмотр" только одну страницу текста исходника, пролистать ниже будет пустой текст - раньше без проблем работало


Вин10-64 браузер Хром, тоже поломали исходники в КБ, невозможно теперь нажать "Просмотр" и слева кликнуть на приложенные файлы, выскакивает окно - на скрине

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


 
Ошибка при выполнении:
class A {
public:
    A()           { Print(1);}
    A( const A& ) { Print(2); }
    ~A()          { Print(0); }
};
void OnStart()
{
        A a1;
        A a2 = A(a1);
}

Результат:   1-2-2-0-0-0

Ожидалось: 1-2-0-0

как в C++.

 

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


 
A100:
Ошибка при выполнении:

Результат:   1-2-2-0-0-0

Ожидалось: 1-2-0-0

как в C++. Кроме того ожидался единый синтаксис: приведение - это приведение, а не вызов конструктора

Да вроде всё верно. Просто наверное там ещё вызывается конструктор перемещения, который в MQL заменяется копированием.
А приведение - это ж вроде (A)a1
 
Alexey Navoykov:
Да вроде всё верно, мне кажется. Просто наверно там ещё вызывается конструктор перемещения, который в MQL заменяется копированием.
А приведение - это ж вроде (A)a1

(А)а1 или А(а1) приведение типов А а1 не приведение, а объявление типа вроде в доках. Хотя счас со скобками че то не то происходит. Единый формат нужен для языка.

 
Valeriy Yastremskiy:

(А)а1 или А(а1) приведение типов А а1 не приведение, а объявление типа вроде в доках. Хотя счас со скобками че то не то происходит. Единый формат нужен для языка.

Тут отличие в том, что в плюсах (A)a1 означает приведение копии объекта. А в MQL - приведение ссылки.  Из-за этого можно огрести проблемы с совместимостью.
Я давно просил их сделать приведение сыылки как в плюсах:  (A&)a1,  но теперь уже наверно вряд ли будут что-то менять.
 
Alexey Navoykov:
Тут отличие в том, что в плюсах (A)a1 означает приведение копии объекта. А в MQL - приведение ссылки.  Из-за этого можно огрести проблемы с совместимостью.
Я давно просил их сделать приведение сыылки как в плюсах:  (A&)a1,  но теперь уже наверно вряд ли будут что-то менять.

Не си не питон) что то между. Спс, не знал, полагал, что приведение типа объекта. Экономия.)

 
Alexey Navoykov:
Да вроде всё верно. Просто наверное там ещё вызывается конструктор перемещения, который в MQL заменяется копированием.
А приведение - это ж вроде (A)a1

Сомневаюсь что все верно, потому что допустим:

class A {
public:
        virtual void f() { Print( 1 ); }
};
class B : public A {
public:
        virtual void g() { ((A)this).f(); }
};
class C : public B {
public:
        virtual void f() { Print( 3 ); }
};
void OnStart()
{
        B *b = new C;
        b.g();
}

Результат в MQL: 3

, а            в C++: 1

В любом случае пусть проверят

 
A100:

Сомневаюсь что все верно, потому что допустим:

Результат в MQL: 3

, а            в C++: 1

В любом случае пусть проверят

Так это как-раз именно та ситуация, которую я описал чуть выше.