Пишу класс, ля логирования событий. Столкнулся с задачей. Стандартных средств для получения имени торгового экспетра нет, поэтому я решил сделать член класса в классе логироваиия:
Т.к. вызваться логирование будет из разных мест, то через конструктор задавать значение для m_expertName не выйдет, т.к., __FILE__ возвращает имя именно текущего компилируемого файла. Соответственно, в каком файле будет создавать экземпляр класса логирования, то в то имя того файла и можно будет передать в класс логирования. А это не вариант.
Изначально, у меня были мысли, что бы как-то сделать всё-таки m_expertName статичным, но тогда его нужно инициализировать на глобальном уровне. Это не вариант, т.к. в классе логирования имени эксперта нет. Дальше я подумал что пусть m_expertName будет не статичным, но константным. Но здесь тоже пападалово:
На последней:
строке ошибка при компиляции эксперта:
А как тогда всё-таки передать в этом класс 1 раз имя эксперта и больше его не передавать? Ведь имя эксперта это фиксированная константа. Нет резона постоянно в каждом классе заводить параметр типа string с именем expertName и передавать его везде. Как по мне это не изящное и далеко не оптимальное решение...
MQLInfoString(MQL_PROGRAM_NAME) чем не катит ?
Огромная благодарность)) Продолбался час. А оказалось что всё проще..)) И класс не нужен. Таким образом можно это всё библиотекой реализовать со всеми её приемуществами.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пишу класс, ля логирования событий. Столкнулся с задачей. Стандартных средств для получения имени торгового экспетра нет, поэтому я решил сделать член класса в классе логироваиия:
Т.к. вызваться логирование будет из разных мест, то через конструктор задавать значение для m_expertName не выйдет, т.к., __FILE__ возвращает имя именно текущего компилируемого файла. Соответственно, в каком файле будет создавать экземпляр класса логирования, то в то имя того файла и можно будет передать в класс логирования. А это не вариант.
Изначально, у меня были мысли, что бы как-то сделать всё-таки m_expertName статичным, но тогда его нужно инициализировать на глобальном уровне. Это не вариант, т.к. в классе логирования имени эксперта нет. Дальше я подумал что пусть m_expertName будет не статичным, но константным. Но здесь тоже пападалово:
На последней:
строке ошибка при компиляции эксперта:
'm_expertName' - member of the constant object cannot be modified Logging.mqh 44 3
А как тогда всё-таки передать в этом класс 1 раз имя эксперта и больше его не передавать? Ведь имя эксперта это фиксированная константа. Нет резона постоянно в каждом классе заводить параметр типа string с именем expertName и передавать его везде. Как по мне это не изящное и далеко не оптимальное решение...