Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
То есть так и должно быть что роль копирующего конструктора выполняет перегруженный оператор присваивания?
На экран выодится 1, т.е. выполняется копирующий конструктор.
Я думаю что вот это: "2) раскомментировать стоку с перегруженным оператором присваивания" по идеи помогать не должно.
Не знаю что есть правильно, но в VS роль копирующего конструктора не выполняет оператор присваивания.
На экран выодится 1, т.е. выполняется копирующий конструктор.
Я думаю что вот это: "2) раскомментировать стоку с перегруженным оператором присваивания" по идеи помогать не должно.
Копирующий конструктор выполняется тут
а не внутри функции fn().Копирующий конструктор выполняется тут
а не внутри функции fn().В таком варианте:
Не выводится строка "Выполнился присваивающий конструктор".А так вывелся:
WWer, если по аналогии с VS, то нужно смотреть на конкретную ситуацию, приведите конкретный пример копирования/присваивания. Что будет выполнено решается на месте.А зачем ее инициализировать? Это же экземпляр класса у которого есть конструктор как раз для этого.
И как же тогда правильно написать копирующий конструктор для этой цели?
У вас вполне правильно написан. Ошибка в функции getCopy(), пытающейся вернуть объект. После переопределения присваивания она уже возвращает указатель, ошибка испаряется.
--
Непонятка здесь может быть вызвана тем, что в языке есть некоторый "синтаксический люфт", связанный с одинаковым представлением синтаксиса обращения в полям статического объекта и динамического (через точку, а не стрелку. что, кстати, реально удобно). Это входит в привычку и может несколько притуплять чёткость различения объектов и указателей на объекты. Что в свою очередь может создавать ряд иллюзий, в частности, будто бы статической (или автоматической) объектной переменной может быть что-то присвоено. Отнюдь, объектная переменная слева от присваивания - всегда указатель, если не определён копирующий конструктор.
С++ конструирует объект q2 внутри функции fn() в return, поэтому и отрабатывает конструктор копий.
В MQL5 объект конструируется снаружи, поэтому есть различия. Устраним.
Для интересующихся: называется это Return value optimization
Коллеги, доброго времени суток!
Подскажите, как мне получить значения цен по разным фин. инструментам синхронизировано? Я имею в виду, например, цены закрытия баров в определенный момент времени в прошлом на разных инструментах. Воспользоваться функцией CopyClose и получать значения по индексу баров не совсем корректно, поскольку на разных инструментах могут быть пропущенные бары. Насколько я помню, в mql4 была функция BarShift по времени, есть ли аналог на mql5?
Если время вам известно,то можете использовать данную функцию.
Обращение по начальной дате и количеству требуемых элементов
int CopyClose(
string symbol_name, // имя символа
ENUM_TIMEFRAMES timeframe, // период
datetime start_time, // с какой даты
int count, // сколько копируем
double close_array[] // массив для копирования цен закрытия
);
Если время вам известно,то можете использовать данную функцию.
Обращение по начальной дате и количеству требуемых элементов
int CopyClose(
string symbol_name, // имя символа
ENUM_TIMEFRAMES timeframe, // период
datetime start_time, // с какой даты
int count, // сколько копируем
double close_array[] // массив для копирования цен закрытия
);
Допустим, я хочу найти отношение значений close[i] EUR/USD и close[i] GBP/USD, но если обращаться по индексу i, то все-равно бары могут быть разные по времени, поскольку существуют пропущенные бары.
То есть, мне в цикле для каждого бара использовать CopyClose(Symbol, 0, date_of_current_bar, 1, array) ?
Мне кажется,что бары старших ТФ редко "пропадают".А так да..От указываемой даты получить один бар.Точнее клозе с него.
Другой вариант одновременно получать время этого бара через CopyTime().И сравнивать,чтобы были синхронны.
И третий вариант (наверное облегчающий) сразу использовать CopyRates в структуру.