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

 
Нет сообщения об ошибке доступа:
class A {
    enum E {
	a,
	b
    };
};
void OnStart()
{
    Print(EnumToString((A::E)1)); //нормально ???
}
 
SymbolInfoDouble(_Symbol,SYMBOL_BID) не всегда равен цене закрытия rates[0].close (структура MqlRates), это ведь баг?
 
Konstantin Kulikov #:
SymbolInfoDouble(_Symbol,SYMBOL_BID) не всегда равен цене закрытия rates[0].close (структура MqlRates), это ведь баг?
volatile int i;
int f1() { return i; }
int f2() { return i; }
void f()
{                          //Результат:
    Print( f1() == f2() ); //false (что в общем случае допустимо)
{
 
Ошибка при компиляции:
class A {
public:
    class B {
    public:
        static int i;
    };
};
int A::B::i;
void OnStart()
{
    Print(         A::B::i ); //(1)//нормально
    Print(typename(A::B::i)); //(2)//Error: 'i' - undeclared identifier
}
А какая принципиальная разница между (1) и (2) ?
 
A100 #:
Ошибка при компиляции: А какая принципиальная разница между (1) и (2) ?
Print(typename((A::B::i)))

Догадался.

 
fxsaber #:

Догадался.

Да, я помню Ваше отношение к дополнительным скобкам - там правда фигурные были:

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

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2022.11.05 17:39

Ограничение компилятора.
void OnStart()
{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
  {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
 
Ошибка при компиляции:
class A {
    static int i;
};
int A::i = 1; //(1)
int A::i = 2; //(2)//нормально ???
int    i = 3; //(3)
int    i = 4; //(4)//Error: 'i' - variable already defined
А какая принципиальная разница между (2) и (4) ?
 
A100 #:
volatile int i;

Откуда "volatile"? На МТ 3733 такого нет.
Это какой-то #define или новая версия МТ?

 
A100 #:
Ошибка при компиляции: А какая принципиальная разница между (1) и (2) ?
class A {
public:
    static class B {} *b;
    static int i;
};
A::B *A::b;
int A::i;
void OnStart()
{
    Print( b ); //(1) Error: 'b' - undeclared identifier
    Print( i ); //(2) Error: 'i' - undeclared identifier
}

У вас "b" ранее был создан как глобальный указатель, а не как инициализация статического члена класса.

 
Sergey Dzyublik #:

Откуда "volatile"? На МТ 3733 такого нет.
Это какой-то #define или новая версия МТ?

Это пояснение ситуации на абстрактном примере, без привязки к MQL.