Ошибки, баги, вопросы - страница 1784
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Посмотрите здесь - Выполнение программ
раткая сводка по программам на MQL5 приведена в таблице:
Программа
Выполнение
Примечание
Скрипт
В собственном потоке, сколько скриптов - столько потоков выполнения для них
Зацикленный скрипт не может нарушить работу других программ
Эксперт
В собственном потоке, сколько экспертов - столько потоков выполнения для них
Зацикленный эксперт не может нарушить работу других программ
Индикатор
Один поток выполнения для всех индикаторов на одном символе. Сколько символов с индикаторами - столько потоков выполнения для них
Бесконечный цикл в одном индикаторе остановит работу всех остальных индикаторов на этом символе
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Slawa, 2017.02.06 07:22
Но и тут нельзя закладываться на то, что команда Deinit на M5 будет обработана раньше, чем команда Init на M15Увы, не ведом мне этот формат.
Эксперимент показал, что число в графическом буфере представлено по тем же правилом что и double - т.е. передать такое длинное число через графический буфер не представляется возможным - огорчило.
Увы, в графическом буфере умещается только число из 10 знаков.
Кстати, почему там ограничение в 4 знака после запятой?
Ошибка при компиляции (точнее отсутствие сообщения об ошибке)
public:
int i;
};
class B : public A {};
class C : protected A {};
class D : protected B {};
void OnStart()
{
C c;
Print( c.i ); //Error: 'i' - protected member access error
D d;
Print( d.i ); //нормально???
}
Ошибка при выполнении: EX5 loading failed
typedef void (*f)( A*);
class A {
virtual void g( A *a ) {}
f ff;
};
void OnStart() { Print( __FUNCTION__ ); }
Ошибка при выполнении
void f( B* );
class A { public:
virtual ~A() { f((B *)&this ); } //(*)
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
class B : public A { public:
virtual void g( A* ) { Print( __FUNCTION__ ); }
};
void f( B *b ) { b.g( b ); }
void OnStart() //(1)
{
B *b = new B;
delete b;
}
Результат: incorrect casting of pointers in (*)
А если
то результат: B::g
а в чем принципиальная разница между OnStart (1) и (2) ???
Кроме того результат подобного кода в С++: A::g
A100:
Для чего может быть нужен виртуальный деструктор, как в Вашем примере выше? Разве его можно переопределить в потомке?
Для чего может быть нужен виртуальный деструктор, как в Вашем примере выше? Разве его можно переопределить в потомке?
В MQL он всегда виртуальный, даже если это не указано явно
Так Вы на вопрос не ответили - для чего?
Если в MQL все деструкторы виртуальные, то вопрос для чего нужен виртуальный деструктор сводится в вопросу для чего нужен деструктор? А это слишком общий вопрос