https://docs.mql4.com/ru/basis/types/classes
Конструктор по умолчанию имеет специальное назначение при инициализации массива объектов своего класса. Конструктор, все параметры которого имеют значения по умолчанию, не является конструктором по умолчанию. Покажем это на примере:
void OnStart() |
И проверить нельзя, ибо пример не компилируется:
'foo4' - undeclared identifier
Ну, и что, что документация такого качества, зато её - много, особенно по MQL5, и Renat это убедительно вчера обосновывал, с цифрами.
Исправьте:
Print("foo1.m_call_time=",foo1.ToString()); Print("foo2.m_call_time=",foo2.ToString()); Print("foo3.m_call_time=",foo3.ToString()); Print("foo4.m_call_time=",foo4.ToString()); Print("foo5.m_call_time=",foo5.ToString()); Print("pfoo6.m_call_time=",pfoo6.ToString()); Print("pfoo7.m_call_time=",pfoo7.ToString()); Print("pfoo8.m_call_time=",pfoo8.ToString()); Print("pfoo9.m_call_time=",pfoo9.ToString());
на
Print("foo1.m_call_time=",foo1.ToString()); Print("foo2.m_call_time=",foo2.ToString()); Print("foo3.m_call_time=",foo3.ToString()); Print("foo4.m_call_time=",foo40.ToString()); Print("foo4.m_call_time=",foo41.ToString()); Print("foo5.m_call_time=",foo5.ToString()); Print("pfoo6.m_call_time=",pfoo6.ToString()); Print("pfoo7.m_call_time=",pfoo7.ToString()); Print("pfoo8.m_call_time=",pfoo8.ToString()); Print("pfoo9.m_call_time=",pfoo9.ToString());
и, наверное, станет можно проверить.
Вообще-то конструктор с параметром по умолчанию и конструктор по умолчанию это одно и то же. Должно быть по крайней мере.
Это в C++. Но здесь - MQL4++, в тонкостях может отличаться.
Вон, у них вообще на MQL4++ написано:
CFoo foo2(); // явный вызов параметрического конструктора с параметром по умолчанию
В C++ это - декларация функции.
Или та же ссылка на массив при передаче в функцию:
void f(int &array[]);
В C++ это - массив ссылок, что является невозможным в C++ типом объекта.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
https://docs.mql4.com/ru/basis/types/classes
Конструктор по умолчанию имеет специальное назначение при инициализации массива объектов своего класса. Конструктор, все параметры которого имеют значения по умолчанию, не является конструктором по умолчанию. Покажем это на примере:
void OnStart()
{
// CFoo foo; // такой вариант использовать нельзя - конструктор по умолчанию не задан
//--- допустимые варианты создания объекта CFoo
CFoo foo1(TimeCurrent()); // явный вызов параметрического конструктора
CFoo foo2(); // явный вызов параметрического конструктора с параметром по умолчанию
CFoo foo3=D'2009.09.09'; // неявный вызов параметрического конструктора
CFoo foo40(foo1); // явный вызов конструктора копирования
CFoo foo41=foo1; // неявный вызов конструктора копирования
CFoo foo5; // явный вызов конструктора по умолчанию (если конструктор по умолчанию отсутствует,
// то вызывается параметрический конструктор с параметром по умолчанию)
И проверить нельзя, ибо пример не компилируется:
'foo4' - undeclared identifier