Скачать MetaTrader 5

Как упорядочить код?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
hoz
2028
hoz  

 В новом мкл4 появились классы, структуры.. и много чего ещё. Я по тиху въезжаю, но.. как-то не всё просто.

 Начал править свои некоторые кода и наткнулся на грабли. Объясню структуру.

 Имеется библиотека. В ней есть перечень различных функций:

1. Func1()

2. Func2()

3. Func3()

...

5... Func5()

В одной из этих библиотек получаются несколько переменных, которые используются в многих других функциях данной библиотеки, а также и в других библиотеках. Как сделать так чтоб всё это работало без глобальных переменных библиотеки? По некоторым причинам глобальные переменные тут не катят (получается рекурсия).

 Я подумал, что может подобное можно реализовать с помощью структуры?

Artyom Trishkin
Модератор
92265
Artyom Trishkin  
Почитайте, вдруг подойдёт
Dmitiry Ananiev
8634
Dmitiry Ananiev  

если функция должна вернуть не одно значение, то есть несколько путей.

1. Передавать массивы, недостаток - передавать можно только однотипные переменные.

2. Передавать через глобальные переменные.

3. Предавать по ссылке & d списке параметров.

4. Сделать классы.

hoz
2028
hoz  
artmedia70:
Почитайте, вдруг подойдёт



Артём, Вы как обычно правы! Подойдёт, ещё как подойдёт! Правда тут изучать не на один день... Изучал использование классов в С++, но там как-то по сложнее. А вот по Вашей ссылке очень всё чётко.

Тока вот для чего структуры нужно я так и не понял. Есть ли принципиальная необходимость их использования вообще? Согласно справки, там там типа просто сборище элементов произвольного типа . Я так понимаю, имеется в виду перечень объявлений переменных инициализируемых либо неявно, либо с необходимыми значениями. Но это же типа тоже самое, что и тупо инклюдить в код включение и всё. Только в данном случает инлюдится будет функция, в которой имеется данный перечень объявлений переменных различных типов. Я прав? 

Vadim Zhunko
5226
Vadim Zhunko  
Структура и класс это одно и тоже. Различие только в доступности членов по умолчанию.
danrusm
83
danrusm  
Структура это набор данных, класс это манипулятор данными, если будете придерживаться этого, не ошибётесь. В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать. Учитесь писать на си++, про mql как основу стратегии забудьте, используйте минимум api метатрейдера.
o_o
Модератор
24229
o_o  
dan_d:
используйте минимум api метатрейдера.
а дайте пожалуйста ссылку на api метатрейдера.
Alexey Subbotin
4918
Alexey Subbotin  
dan_d:
В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать.
Хотелось бы узнать, почему
Vadim Zhunko
5226
Vadim Zhunko  

dan_d:
1. Структура это набор данных, класс это манипулятор данными, если будете придерживаться этого, не ошибётесь.

2. В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать.

1. Это было до С++. Т.е. было в С. Начиная с С++, структура расширена до класса. В С классов не было.

2. Утверждение странное.

hoz
2028
hoz  
Zhunko:

1. Это было до С++. Т.е. было в С. Начиная с С++, структура расширена до класса. В С классов не было.

Тогда нафига в новом билде появились структуры, если есть классы? Логика в чём?
Alexey Subbotin
4918
Alexey Subbotin  
hoz:
Тогда нафига в новом билде появились структуры, если есть классы? Логика в чём?


Классы имеют ряд отличий от структур:

в объявлении используется ключевое слово class;

по умолчанию все члены класса имеют спецификатор доступа private, если не указано иное. Члены-данные структуры по умолчанию имеют тип доступа public, если не указано иное;

объекты классов всегда имеют таблицу виртуальных функций, даже если в классе не объявлено ни одной виртуальной функции. Структуры не могут иметь виртуальных функций;

к объектам класса можно применять оператор new, к структурам этот оператор применять нельзя;

классы могут наследоваться только от классов, структуры могут наследоваться только от структур.

Это из справки MQL5. В MQL4++, подозреваю, то же самое.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий