- Объектно-ориентированное программирование
- Как рационально объединить большие массивы структур.
- Ошибка в коде. Кто исправит, тот молодец!
А в чем проблема-то ?
У меня КАЖДЫЙ класс описывается двумя файлами - .mqh и .mq5 - все в порядке.
У объектов должны быть функции возврата структуры, и запроса структуры. Там где требуется - один объект обращается к другому, а другой - возвращает ему структуру.
Лично я предпочитаю вобще не структуры, а классы, и возвращать указатель.
Без разницы, в одном файле или в отдельных. Если в разных, то к файлу класса использующего структур подключить файл структуры.
Хотя, вопрос не совсем понятен. Может быть имеется ввиду массив структур объявленный на глобальном уровне программы. Тогда объявить массив структур в отдельном файле и подключать его к основному файлу (советнику или индикатору) - что бы в итоге все работало, и подключить к файлу с классом, что бы класс писать, компилировать для проверки.
ExtremumsStr MM[];
Очень важно, чтобы структура MM[] была внутри объекта Extr(); т.к. советник использует несколько таких объектов для разных TimeFrame, символов и т.д. объект Extr() должен быть универсальным и обеспечить бесперебойный контроль экстремумов при параллельной работе нескольких объектов этого класса в любых условиях обстановки. У каждого объекта своя структура.
Я никак не пойму, в чем проблема.
Есть структура внутри какого-то класса, объявленная, как public. Значит, к ней существует прямой доступ извне. Ну, так и обращаемся к ней напрямую там, где надо !
Обращаемся к структуре одного объекта - получаем эту структуру из него. Обращаемся к той же структуре, но в другом объекте - получаем другие значения полей структуры.
Что не так ?
Имеется ввиду структура внутри класса "class CExtremums", объект "CExtremums Extr();" задана так: public:
ExtremumsStr MM[];
Очень важно, чтобы структура MM[] была внутри объекта Extr(); т.к. советник использует несколько таких объектов для разных TimeFrame, символов и т.д. объект Extr() должен быть универсальным и обеспечить бесперебойный контроль экстремумов при параллельной работе нескольких объектов этого класса в любых условиях обстановки. У каждого объекта своя структура.
Массив ExtremumsStr MM[]; уже объявлен в секции public, поэтому будет прямо доступен.
Например, создали экземпляр класса:
CExtremums x;
Потом так:
x.MM[0]...
Его можно оправить в метод или функцию:
f(x.MM);
void f(ExtremumsStr & mm[]){
//обработка mm
}
А в чем проблема-то ?
У меня КАЖДЫЙ класс описывается двумя файлами - .mqh и .mq5 - все в порядке.
У объектов должны быть функции возврата структуры, и запроса структуры. Там где требуется - один объект обращается к другому, а другой - возвращает ему структуру.
Лично я предпочитаю вобще не структуры, а классы, и возвращать указатель.
Ага, с указателями быстрее будет. Структуры-то полностью копируются.
Ага, с указателями быстрее будет. Структуры-то полностью копируются.
А массив структур?
А с указателями как?
Проблема в компиляции. Как создать метод в классе по получению структуры ведь не задана структура ExtremumsStr MM[]; . Получается нужно задать другую структуру того же типа во втором классе и передать в нее структуру MM[], но это потребует много ресурсов и замедлит выполнение программы. Что за способ с указателями?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования