Вопросы по ООП в MQL5 - страница 89

Если у структуры одно поле, то нормально. А если больше, то бессмысленно и даже глупо. 
Dmitry Fedoseev:
Если у структуры одно поле, то нормально. А если больше, то бессмысленно и даже глупо. 

Кому может понадобиться структура с одним полем? В чем сия "структурность" помогает?

Mikhail Dovbakh:

Кому может понадобиться структура с одним полем? В чем сия "структурность" помогает?

структура обертка над массивом

MQL не умеет работать с указателями, но умеет работать со структурами без ограничений, поэтому приходится оборачивать массив в структуру

Igor Makanu:

структура обертка над массивом

MQL не умеет работать с указателями, но умеет работать со структурами без ограничений, поэтому приходится оборачивать массив в структуру

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

Alexandr Andreev:

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

проще

причем чтобы не плодить типы, сделал класс в котором описал в секции public структуры, частично эти типы использую за пределами класса, 

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

Mikhail Dovbakh:

Кому может понадобиться структура с одним полем? В чем сия "структурность" помогает?

Это был.. это.. как его там... риторический тезис))

А впрочем, бывает полезно один массив поместить в структуру, а потом массив из этих структур использовать.

Нормально работает. Только момент один есть. При возврате из функции структуры, возвращается не структура, созданная внутри функции, а копия этой структуры, то есть, запускается неявный конструктор копирования.
Vladimir Simakov:
Нормально работает. Только момент один есть. При возврате из функции структуры, возвращается не структура, созданная внутри функции, а копия этой структуры, то есть, запускается неявный конструктор копирования.
Лишнего копирования нету, структура создаётся в стэке, из неё копируется нужное поле.
Aliaksandr Hryshyn:
Лишнего копирования нету, структура создаётся в стэке, из неё копируется нужное поле.
Это если компилятор соптимизирует. А так, при вызове f(), произойдет следующее. Указатель вершины стека смещается на размер структуры (сюда вернется результат). На стек поднимается код функции. Далее, в процессе выполнения, доходим до объявления структуры. Указатель стека опять смещается на ее размер. Вот эта структура и заполняется функцией. Перед выходом из функции происходит копирование памяти, выделенной под структуру в функции в выделенную для возврата.
Vladimir Simakov:
Это если компилятор соптимизирует. А так, при вызове f(), произойдет следующее. Указатель вершины стека смещается на размер структуры (сюда вернется результат). На стек поднимается код функции. Далее, в процессе выполнения, доходим до объявления структуры. Указатель стека опять смещается на ее размер. Вот эта структура и заполняется функцией. Перед выходом из функции происходит копирование памяти, выделенной под структуру в функции в выделенную для возврата.
Скорее всего оптимизирует.