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

 

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

class A {
public:
        virtual void f() { Print( __FUNCSIG__ ); }
};
class B : public A {
public:
        virtual void f() { Print( __FUNCSIG__ ); }
} b;
void OnStart()
{
        ((A)b).f();
}

Результат: B::f()

    а в C++: A::f()

 
A100:

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

Результат: B::f()

    а в C++: A::f()

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

Ошибка в документации:

Класс CiFractals

Класс CiFractals является классом для работы с техническим индикатором "Awesome Oscillator".

Описание

Класс CiFractals обеспечивает создание, настройку и доступ к данным индикатора "Awesome Oscillator".

Декларация

   class CiFractals: public CIndicator

Заголовок

   #include <Indicators\BillWilliams.mqh>

Документация по MQL5: Стандартная библиотека / Индикаторы / Индикаторы Билла Вильямса / CiFractals
Документация по MQL5: Стандартная библиотека / Индикаторы / Индикаторы Билла Вильямса / CiFractals
  • www.mql5.com
Стандартная библиотека / Индикаторы / Индикаторы Билла Вильямса / CiFractals - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
A100:

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

Результат: B::f()

    а в C++: A::f()

еще один пункт за отделение объектов от указателей

 
template <typename T>
class CLASS {};

CLASS* Ptr = new CLASS; // internal error #106
Код ошибочный, но ошибка с номером.
 
TheXpert:

еще один пункт за отделение объектов от указателей

при чём здесь указатели?
 
A100:

в C++: A::f()

Что такой код выдает?

((A*)&b).f();
 
fxsaber:

Что такой код выдает?

То же самое.

 
Ilya Malev:

То же самое.

что и MQL (при условии его приведения к С++ виду). Но Вы и сами могли проверить это
 
A100:
что и MQL (при условии его приведения к С++ виду). Но Вы и сами могли проверить это

Проверил: