Ошибки, баги, вопросы - страница 1707
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Указателю присваивается rvalue, которое потом затирается new A.
Где? Вот здесь?
this[0] = new A;
Здесь operator[] возвращает значение, содержащееся в ячейке Data[0]. Не ссылку на эту ячейку, не указатель на неё, а просто копию содержащегося в этой ячейке значения, т.е. rvalue. Естественно, этой копии ничего присвоить нельзя. Как operator= в классе А это меняет, не пойму.
А я так и не понял последнего примера. Перегрузка оператора "=" в классе А превращает this[0] из rvalue в lvalue... Не могу понять, как. Это какие-то особенности МКЛ, в плюсах такого поведения нет. fxsaber, вы как, вообще, догадались до этой конструкции? Я имею в виду перегрузку = в А. Или методом тыка?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: TypeToBytes
fxsaber, 2016.09.21 21:25
Опубликован. Теперь для любой переменной (структура или стандартный тип) работает не только чтение, как с массивом, но и ЗАПИСЬ:
_W(AnyVariable)[Pos] = AnyValue; // Записывает по байтовому смещению Pos значение AnyValue в переменную AnyVariable
Догадаться до реализации было непросто - наверное, получился неплохой тест на среднее владение ООП: мне известна только классика для классов.
Если кто знает нечто похожее, поделитесь ссылкой для образования.
С полным пониманием делал. Иначе такое точно не написал бы
Т.е. всё понимаете, а сказать не можете? )) Ясненько.
Где? Вот здесь?
this[0] = new A;
Здесь operator[] возвращает значение, содержащееся в ячейке Data[0]. Не ссылку на эту ячейку, не указатель на неё, а просто копию содержащегося в этой ячейке значения, т.е. rvalue. Естественно, этой копии ничего присвоить нельзя. Как operator= в классе А это меняет, не пойму.
Наверное, тут всё дело всё в тех же замутах со ссылками в МКЛ.
Как бы не оказалось, что здесь возвращается не значение, а ссылка на него, т.е. lvalue... Но тогда почему ей сразу нельзя присвоить новое значение, зачем для этого нужен operator= в классе А?.. Фиг пойми...
Наверное, тут всё дело всё в тех же замутах со ссылками в МКЛ.
Как бы не оказалось, что здесь возвращается не значение, а ссылка на него, т.е. lvalue... Но тогда почему ей сразу нельзя присвоить новое значение, зачем для этого нужен operator= в классе А?.. Фиг пойми...
Да, всё дело именно в особенностях MQL. Когда ты присваиваешь что-либо rvalue-указателю, то происходит автоматическое приведение этого указателя к ссылке на объект. Чё-то все прям как вчера родились!
Вообще что касается возврата значения функции по ссылке - очень бы хотелось иметь такую возможность в MQL. Я уже давно прошу об этом в сервис-деске. Но они упираются, мол это небезопасно. Хотя по факту это ничуть не опасней, чем передача аргументов по ссылке.
Да, всё дело именно в особенностях MQL. Когда ты присваиваешь что-либо rvalue-указателю, то происходит автоматическое приведение этого указателя к ссылке на объект. Чё-то все прям как вчера родились!
Несоответствие типов
MqlTick time_msc - long.
CopyTicks from - ulong.