Ошибки, баги, вопросы - страница 3598
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Просьба объяснить логику такого поведения компилятора.
Зачем ему требуется удалять штатный оператор присваивания при наличии const-полей?
ЗЫ Поиск выдал упоминание только в книге . Но там нет пояснения.
Есть кое-что немного похожее в документации.
Можно трактовать так, что компилятор удалил оператор копирования для класса B, так как нет возможности скопировать объект класса A, который является членом класса B. В этом я вижу аналогию с вашим примером - там нет возможности скопировать Tmp, так как он константный.
Но это просто мои догадки, я не уверен, что они в правильную сторону хотя бы.
а следует использовать конструктор Copy
Если определен явный конструктор копирования, то он будет вызван
Я не знаю, следует ли компилятору генерировать неявный конструктор копирования в таком случае. Я не программирую на C++, поэтому я не знаю, какое поведения компилятора считается правильным.
Не то же самое. Там ошибка ожидаема, так как это присваивание, и, кроме того, в A определен явный 'operator='.
Да, вы правы, я не заметил, что там присваивание, а не инициализация.
После сегодняшнего множественного апдейта иногда вот такая ошибка проскакивала, сфоткал её:
Сейчас столкнулся с такой проблемой - МТ4 'не видит' некоторые соседние бары в Тестере.
Именно некоторые, т.к. в других ситуациях пропуски баров проблемой не является.
В самом начале после start() вывожу строки:
Bar[1] - Время 23:49:
Bar[0] следующий за Bar[1] - Время 10:30:
Но в лог-файле Тестера они как соседние бары отсутствуют:
Т.е. отсутствует случай когда Бар 10:30 следует за Баром 23:49 (что в результате приводит к проблемам в работе).
С чем это может быть связано? (похоже на баг)
Правильно ли я понимаю, что спецификатор delete нет смысла использовать, если может быть использована ссылка/указатель на базовый класс? Или в таких случаях необходимо закрытое наследование? Как принято поступать?
Или в таких случаях необходимо закрытое наследование?
При закрытом наследовании тоже геморой - придется для других публичных методов что-то такое городить:
В общем, не до конца понимаю логику использования delete в этом контексте.
Умные дядьки предлагают для "чистого кода" наследоваться, вместо того, чтобы править существующий оттестированный код. Ага, легко сказать.
Хотя, вероятно, я просто изначально наплужил с архитектурой.При активной загрузке исторических данных, когда в таймере вызывается CopyRates (), крайне нестабильно ведёт себя iBarShift и даже iBars. Выдаётчасто-1 на тех участках, где данные уже загружены. Решается только вычислением номера бара собственными силами, когда в памяти приходится держать свой массив времени открытия баров.
ИМХО, iBarShift не место в пятерке, как и другим iXXX. От буфферизации таймсерий отказались (которая была в четверке), но продолжаем писать, делая вид, как будто буфферизация есть.
Решается только вычислением номера бара собственными силами, когда в памяти приходится держать свой массив времени открытия баров.
Единственное правильное решение, ИМХО.
ИМХО, iBarShift не место в пятерке, как и другим iXXX. От буфферизации таймсерий отказались (которая была в четверке), но продолжаем писать, делая вид, как будто буфферизация есть.
Единственное правильное решение, ИМХО.
для быстрого и без поддержания активности на других рабочих периодах, можно использовать индикатор шпион
нагрузку он не дает дополнительную, а переключения по графикам гораздо быстрее, и нужные символы сразу как в текущий открытый пишет