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

 
Alexey Kozitsyn:
Запустил, увидел проблему. Похоже с юнионами сейчас разрешено использовать только структуры с паблик-полями. Тогда можно будет написать struct = {0};

Это не так.

[Удален]  

Может я опять Вас не понял, но этот код работает без предупреждений:

struct STRUCT
{
//private:
  int i;

};

// Нужен только для того, чтобы показать необходимость решения без конструктора
union UNION
{
  STRUCT Struct; // конструктора не должно быть
  int i;
};

// Обходим Warning "possible use of uninitialized variable"
template <typename T>
void StructInit( T& ) {}

STRUCT Func()
{
  STRUCT Res = {0}; // ок!
  
//  StructInit(Res); // с этой строкой Warning не появляется, но это какой-то абсурд!
  
  return(Res);  
}

void OnStart()
{
  Func();
}
 
Alexey Kozitsyn:

Может я опять Вас не понял, но этот код работает без предупреждений:

Все верно, public-структуры инициализируются. Но union к этому никакого отношения не имеет.


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

 

Здравствуйте! Подскажите, можно ли объявить массив, указав количество элементов в нём через переменную? Если нет, то как можно реализовать эту задачу?

extern int Period = 10;
int Massiv[Period]; //Выдаёт ошибку: "invalid index value"
 
giros:

Здравствуйте! Подскажите, можно ли объявить массив, указав количество элементов в нём через переменную? Если нет, то как можно реализовать эту задачу?

https://www.mql5.com/ru/docs/array/arrayresize

Документация по MQL5: Операции с массивами / ArrayResize
Документация по MQL5: Операции с массивами / ArrayResize
  • www.mql5.com
Операции с массивами / ArrayResize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
giros:

Здравствуйте! Подскажите, можно ли объявить массив, указав количество элементов в нём через переменную? Если нет, то как можно реализовать эту задачу?


ArrayResize()

 

fxsaber, Yury Kirillov, благодарю вас!

 
fxsaber:
Это баг?

А в "четверке" компилится без проблем.

Причем, "четверка" ведь умеет компилить в ex5, если исходник с расширением mq5.

"Четверка" - условное название, компилятор-то и редактор вроде общие. Затык видимо в версии и последних "улучшениях".

 
Stanislav Korotky:

А в "четверке" компилится без проблем.

Причем, "четверка" ведь умеет компилить в ex5, если исходник с расширением mq5.

"Четверка" - условное название, компилятор-то и редактор вроде общие. Затык видимо в версии и последних "улучшениях".

Действительно, в 1601 билде ME (шел с MT4b1090) компилится.

 

Кто-нить знает почему в хранилище добавляются пустые строки. Или с этим надо идти в СервисДеск? Код загружал без пустых строк.