Ошибки, баги, вопросы - страница 1903
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Возник вопрос: как из класса узнать количество имеющихся экземпляров этого самого класса?
Причина такая: внутри класса есть цикл, внутри которого нужно делать некоторые расчёты только если есть лишь один экземпляр класса, в остальных экземплярах нужно пропускать такие расчёты во избежание их дублирования и выполнения лишних расчётов (они были сделаны в самом первом экземпляре класса и переданы "в общее пользование" - доступны за пределами класса)
Возник вопрос: как из класса узнать количество имеющихся экземпляров этого самого класса?
Причина такая: внутри класса есть цикл, внутри которого нужно делать некоторые расчёты только если есть лишь один экземпляр класса, в остальных экземплярах нужно пропускать такие расчёты во избежание их дублирования и выполнения лишних расчётов (они были сделаны в самом первом экземпляре класса и переданы "в общее пользование" - доступны за пределами класса)
Описать в классе статический счетчик объектов. В конструкторе - увеличивать, в деструкторе - уменьшать.
Причина такая: внутри класса есть цикл, внутри которого нужно делать некоторые расчёты только если есть лишь один экземпляр класса, в остальных экземплярах нужно пропускать такие расчёты во избежание их дублирования и выполнения лишних расчётов (они были сделаны в самом первом экземпляре класса и переданы "в общее пользование" - доступны за пределами класса)
Почему не использовать ссылку на один экземпляр класса?
А внутри — либо рассчитывать (при появлении новых данных), либо возвращать готовый результат.
Возник вопрос: как из класса узнать количество имеющихся экземпляров этого самого класса?
Причина такая: внутри класса есть цикл, внутри которого нужно делать некоторые расчёты только если есть лишь один экземпляр класса, в остальных экземплярах нужно пропускать такие расчёты во избежание их дублирования и выполнения лишних расчётов (они были сделаны в самом первом экземпляре класса и переданы "в общее пользование" - доступны за пределами класса)
Еще лучше все уникальные расчеты вынести в отдельный класс и сделать его синглтонтон.
Еще лучше все уникальные расчеты вынести в отдельный класс и сделать его синглтонтон.
Расчёт не уникальный - если есть единственный экземпляр класса, то расчёт должен быть, если есть несколько экземпляров, то зачем дублировать один и тот же расчёт в других экземплярах этого же класса? Это занимает ресурсы.
В то же время делать в родительском классе ещё один длинный цикл для расчёта этих самых данных - тоже не оптимально (уже два длинных цикла), да и класс-потомок тогда уже станет не самодостаточным.
Почему не использовать ссылку на один экземпляр класса?
А внутри — либо рассчитывать (при появлении новых данных), либо возвращать готовый результат.
если есть несколько экземпляров, то зачем дублировать один и тот же расчёт в других экземплярах этого же класса?
А зачем вообще эти другие экземпляры, если расчет один?
Андрей, можно чуть более развёрнуто? Не совсем понял.
Лучше дай более детальное описание задачи, тогда и ответ более конкретный получится.
Расчёт не уникальный - если есть единственный экземпляр класса, то расчёт должен быть, если есть несколько экземпляров, то зачем дублировать один и тот же расчёт в других экземплярах этого же класса? Это занимает ресурсы.
В то же время делать в родительском классе ещё один длинный цикл для расчёта этих самых данных - тоже не оптимально (уже два длинных цикла), да и класс-потомок тогда уже станет не самодостаточным.
Доброго времени суток!
Спустя 4 года вернулся к одному Советнику ( купил его в 2013г. и забыл про него). Решил попробовать его снова. Но теперь система выдает ошибку в одной из строк кода. Видимо, что то поменялось за 4 года в Метатрейдере, так как раньше он точно работал. Сам в программировании "ноль", поэтому и покупал Советника))) Подскажите в чем может быть ошибка.
Вот часть кода
extern int Bperiod = 20; // Период усреднения основной линии индикатора.
extern int Bdeviation = 2; // Отклонение от основной линии.
extern int Bshift = 0; // Сдвиг индикатора относительно ценового графика.
extern int Baprice = 0; // CLOSE=0, OPEN=1, HIGH=2, LOW=3, MEDIAN=4, TYPICAL=5, WEIGHTED=6 .
extern string _6 = "========";
extern bool UseAutoDig = true; // Если=true->внешние переменные в пунктах умножаются на 10.
extern bool UseECN\NDD = true; // Если=true->ордера выставляются без стопов, затем модифицируются.
Ошибка выдается по последней строке в команде
UseECN\NDD эта команда дальше в советнике много раз повторяется и в каждой строке где она есть вылетает ошибка
Примеры ошибок
'\' - illegal escape sequence e_plat2.mq4 49 22
'UseECN' - undeclared identifier e_plat2.mq4 144 6
'NDD' - undeclared identifier e_plat2.mq4 144 13
'4206' - case value already used e_plat2.mq4 643 8
Если не затруднит, подскажите в чем может быть причина?
UseECN\NDD эта команда дальше в советнике много раз повторяется и в каждой строке где она есть вылетает ошибка
Замените по всему коду "UseECN\NDD" на "UseECN_NDD" (Ctrl+H)