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

 

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

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

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

1. Func1()

2. Func2()

3. Func3()

...

5... Func5()

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

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

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

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

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

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

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

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

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



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

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

 
Структура и класс это одно и тоже. Различие только в доступности членов по умолчанию.
 
Структура это набор данных, класс это манипулятор данными, если будете придерживаться этого, не ошибётесь. В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать. Учитесь писать на си++, про mql как основу стратегии забудьте, используйте минимум api метатрейдера.
 
dan_d:
используйте минимум api метатрейдера.
а дайте пожалуйста ссылку на api метатрейдера.
 
dan_d:
В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать.
Хотелось бы узнать, почему
 

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

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

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

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

 
Zhunko:

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

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


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

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

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

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

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

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

Это из справки MQL5. В MQL4++, подозреваю, то же самое.
Причина обращения: