Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Скачай документацию одним файлом. Это просто!
hoz
1936
hoz 2014.01.29 18:58 

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

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

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

1. Func1()

2. Func2()

3. Func3()

...

5... Func5()

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

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

Artyom Trishkin
Модератор
75764
Artyom Trishkin 2014.01.29 20:31  
Почитайте, вдруг подойдёт
Dmitiry Ananiev
6587
Dmitiry Ananiev 2014.01.30 00:47  

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

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

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

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

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

hoz
1936
hoz 2014.01.30 08:12  
artmedia70:
Почитайте, вдруг подойдёт



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

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

Vadim Zhunko
5227
Vadim Zhunko 2014.01.30 10:08  
Структура и класс это одно и тоже. Различие только в доступности членов по умолчанию.
danrusm
83
danrusm 2014.01.30 14:47  
Структура это набор данных, класс это манипулятор данными, если будете придерживаться этого, не ошибётесь. В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать. Учитесь писать на си++, про mql как основу стратегии забудьте, используйте минимум api метатрейдера.
o_o
Модератор
23695
o_o 2014.01.30 15:55  
dan_d:
используйте минимум api метатрейдера.
а дайте пожалуйста ссылку на api метатрейдера.
Alexey Subbotin
4998
Alexey Subbotin 2014.01.30 16:05  
dan_d:
В структуре не должно быть сложных методов, только присваивание значений полям, бывают конечно форсмажоры, но лучше их избегать.
Хотелось бы узнать, почему
Vadim Zhunko
5227
Vadim Zhunko 2014.01.30 16:54  

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

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

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

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

hoz
1936
hoz 2014.01.30 17:03  
Zhunko:

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

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


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

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

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

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

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

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

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