1. А вы не пробовали почитать инструкции: что, как, для чего, когда лучше, как чаще, чем плохо или не удобно?
2. GetMarkerInfo (_Symbol, Symbol_Properties& SSym, Position_Properties& SPos, -1);
по ссылке передают уже созданные объекты, что вы тут пытаетесь сделать - какая-то ересь.
создайте объекты отдельно и передайте в функцию по ссылке:
Symbol_Properties SSym; Position_Properties& SPos; GetMarkerInfo (_Symbol, SSym, SPos, -1);
если хотели создать объект при вызове функции тогда так:
GetMarkerInfo (_Symbol, Symbol_Properties SSym(), Position_Properties SPos(), -1);
не в курсе или в mql корректно все будет обработано, посмотрите сами.
3. У вас не закоментировано в первом коде Lots_Properties SLots; в самом конце (2 строчка снизу) это так и надо ?
1. А вы не пробовали почитать инструкции: что, как, для чего, когда лучше, как чаще, чем плохо или не удобно?
Пробывал и читал. Но я когда читал, думал о передаче самого класса почему-то, а не его объекта.
по ссылке передают уже созданные объекты, что вы тут пытаетесь сделать - какая-то ересь.
создайте объекты отдельно и передайте в функцию по ссылке:
Теперь я понял, что объект нужно создать заранее. Тогда логичнее их создавать сразу как у меня в инклюднике структур? Если они всё-равно есть в каждом классе и вообще в экспертах.
если хотели создать объект при вызове функции тогда так:
Symbol_Properties SSym; Position_Properties& SPos; GetMarkerInfo (_Symbol, SSym, SPos, -1);
Возможно, Вы имеете в виду так:
Symbol_Properties& SSym; Position_Properties& SPos; GetMarkerInfo (_Symbol, SSym, SPos, -1);
Получается, разумнее было бы в инклюднике сразу создавать со знаком & все объекты?
3. У вас не закоментировано в первом коде Lots_Properties SLots; в самом конце (2 строчка снизу) это так и надо ?
Можно не созданный передавать. Только добавить *.
xxx * & yyy
Можно не созданный передавать. Только добавить *.
xxx * & yyy
Но это уже указатель. И разыменование. Прироста производительности не достигнется. Т.к. это не ссылка.
Symbol_Properties SSym; Position_Properties& SPos; GetMarkerInfo (_Symbol, SSym, SPos, -1);
извините, это я опечатался немного - недоудалил &.
Ссылка это как псевдоним у писателей:
1. Мы купили кота, назвали его Вася. (то же самое что создали объект класса Сat: Сat Baca; )
2. Задача кота уметь кушать и гадить ( то же что и методы класса)
3. Если мы начнем кота называть не Вася, а Василий ( эквивалент Сat& Bacilij = Baca;)
4. То мы все еще будем иметь лишь одного кота но с двумя кличками.
5. Если же побрить налысо Василия, то как бы не хотелось, Вася тоже пострадает (ведь это один и тот же кот: Bacilij = 0; if (Baca == 0) ; // true)
6. И на оборот - если Васе дать обожраться, то и у Bасилия будет болеть живот.
как то так.
Но это уже указатель. И разыменование. Прироста производительности не достигнется. Т.к. это не ссылка.
в с++ указатель и ссылка грубо говоря одно и тоже (ссылка - это неявно разъименованый указатель +- свои приколы).
тут же, в mql нас от чего то спасают, что-то запрещают, и постоянна страхуют от падения.
Но это уже указатель. И разыменование. Прироста производительности не достигнется. Т.к. это не ссылка.
Как-то совсем без разницы как оно называется. Работает и ладно. С производительностью нормально, так как это все-таки ссылка, потому-что не ссылки здесь быть не может.
Всё то оно хорошо, но воз и ныне там. Есть структура:
// =================================================_______ СВОЙСТВА СИМВОЛА _______======================================================= struct Symbol_Properties { datetime gdt_Quote; // Время поступления последней котировки double gda_Price [2]; // Текущие рыночные цены (0 - Bid, 1- Ask) double gd_Spread; // Размер спреда в пунктах double gd_Swap; // Своп double gd_Comission; // Комиссия double gd_Pt; // Величина одного пункта int gi_Digits; // Количество знаков в цене после запятой int gi_StopLevel; // Минимально-допустимый уровень стоп-лосса/тейк-профита в пунктах int gi_FreezLevel; // Уровень заморозки ордеров в пунктах }; //---- Создадим объект структуре Symbol_Properties Symbol_Properties SSym;
В ней я сразу создаю объект структуре, чтоб не плодить дубликаты и использовать его во всех зависимых классах. Это ведь логично? Или как-то иначе делать можно?
Идём дальше.. Объект создан. Нужно его передать в различные методы различных классов и в эксперт разумеется.
Я начал с первого попавшегося базового класса. Как передать ссылку на объект прямо через параметры каждой функции, в которой этот объект используется? Попрошу не теорию, которую я понимаю. А в коде..
Почему я спрашиваю... Вот пример из учебника Стивена Прата, который пишет именно так как я написал в первом своём сообщении:
Получается я ещё сразу делал верно. Но почему-то это не работает тут. Или кто-то со мной не согласен? Что ещё нужно сделать чтоб не ругался компилятор?
В приведённом примере из учебника Стивена Прата чётко видно, что с самого начала написана структура. А дальше не создавался объект. После чего в параметре функции происходит ссылка на объект структуры. Почему так?
И вообще как мне быть в моём случает?
...
В приведённом примере из учебника Стивена Прата чётко видно, что с самого начала написана структура. А дальше не создавался объект. После чего в параметре функции происходит ссылка на объект структуры. Почему так?
В параметрах не происходит никаких ссылок, в параметрах описывается, какие параметры должны передаваться функции и каким образом. В данном случае в функцию display передается параметр типа free_trow по ссылке.
Так где написано "Создаем структуру", она не создается, а описывается.
Чтобы передавать в функцию, надо будет создать (объявить) переменную типа free_throw, а потом передавать ее.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всё просто вроде как, особенно в момент прочтения данных вещей в книгах. Добрался до переписывания своих кодов с работы с копиями объектов на передачу их по ссылке, чтоб работать с непосредственно самим объектом, а не с его копией, и, у меня появились непонятки.
Вот есть у меня простой инклюдник, состоящий из 3 структур:
В классе был метод такой:
Чтобы не работать с копиями, я решил есс-но передавать структуры через параметры функций. Заголовок данной функции получился у меня такой:
Вызываю её в конструкторе так:
В конструкторе же в этой строке при компиляции вылазит ошибка:
Почему? Ведь объект то я передаю получается. Неужели как-то иначе это делается?