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

 
Mikhail Dovbakh #:

Я по факту написал. По идее константа 0х20 меньше  0X8000 и должна  быть тоже int. Здесь Ваши ожидания оправданы.

Но для MQL   не ставили задачу по полному соответствию Си... 

Это тот случай, когда требуется полное соответствие, иначе с С++ на MQL нельзя перенести без трудноуловимой ошибки даже простые казалось бы вычисления:

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

Ошибки, баги, вопросы

A100, 2023.11.25 14:45

Ошибка при выполнении:
void OnStart()
{
    printf("%d", -4/(2 + 0x0));
}

Результат:  2147483646

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

 
Mikhail Dovbakh #:

Если в шаблоне известен тип, то  нет нужды его явно указывать.

Спасибо, но вопрос был о другом.

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

Ошибки, баги, вопросы

fxsaber, 2023.11.26 23:26

Это ограничение MQL5 или просто нельзя делать перегрузку шаблонной функции?
template <typename T>
void Func( void ) { Print(__FUNCSIG__); }

void Func( void ) { Print(__FUNCSIG__); }

void OnStart()
{
  Func<int>();
  Func();
}
 
Ошибка при компиляции:
class A {} const *a, *b;
void f( const A*& ) {}
void OnStart()
{
    f( b ); //Error: cannot convert type 'A *' to reference of type 'const A *'
}
 
Нет сообщения об ошибке доступа:
class A {};
class B : A {};
class C : B {
    class D : A {}; //нормально ???
};
 
A100 #:
Нет сообщения об ошибке доступа:

Не понял.

 
В Java вложенные классы - норма.
Но использование будет выглядеть так:
C::D class_d.

В MQL класс можно определить внутри другого класса, но он попадёт в глобальную область.
D class_d.

На мой взгляд, реализация в MQL неверная.
 
Sergey Gridnev #:
В MQL класс можно определить внутри другого класса, но он попадёт в глобальную область.
D class_d.

У него неймспейс другой будет.

class A {};
class B : A {};
class C : B {
public:    
    class D : A {};
};

void OnStart()
{
  C::D d; // OK.
  D d2; // 'D' - undeclared identifier
}
 
fxsaber #:

У него неймспейс другой будет.

О! Тогда - норм! ✌️
 
fxsaber #:

Не понял.

Возможно так понятнее будет:

class A {};
class B : A {};
class C : B {
    class D : A {}; //Ожидалось: Еrror: A::A is private within this context
};
 
A100 #:

Возможно так понятнее будет:

А почему он тут должен стать приватным?