Выкручивался только в случае, когда надо было передать указатель на один и тот же метод элементов массива. В общем случае не делал.
fxsaber #:
Выкручивался только в случае, когда надо было передать указатель на один и тот же метод элементов массива. В общем случае не делал.
Выкручивался только в случае, когда надо было передать указатель на один и тот же метод элементов массива. В общем случае не делал.
Можно поподробнее...
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577 class SYSTEM { public: virtual void OnTick() {} // указатель на этот метод нужно передавать. }; class SYSTEMS { static int SystemPos; static SYSTEM* Systems[]; // Массив ТС public: static void AllTicks() { // Прогнали все ТС. for (SYSTEMS::SystemPos = ::ArraySize(SYSTEMS::Systems); (bool)SYSTEMS::SystemPos--;) VIRTUAL::NewTick(SYSTEMS::SystemTick); } // Костыль. static void SystemTick() { SYSTEMS::Systems[SYSTEMS::SystemPos].OnTick(); } }; static SYSTEM* SYSTEMS::Systems[]; static int SYSTEMS::SystemPos = 0;
Нашел способ сделать следующим образом:
input int value = 10; class SomeClass { public: SomeClass() {} void print_int(int i) { Print(i); } }; class Wrapper { public: Wrapper() {} void set_object_pointer(void* pointer) { _pointer = pointer; } void execute_callback() { SomeClass* some_obj = _pointer; some_obj.print_int(value); } private: void* _pointer; }; void OnStart() { SomeClass some_class; Wrapper wrapper; wrapper.set_object_pointer(&some_class); wrapper.execute_callback(); }
Теперь можно при работе с указателями на классы не использовать template - void*?
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В mql можно передать указатель на статический метод:
Однако, для не статических методов, такого сделать нельзя. На C++ это можно сделать через std::function и placeholders с передачей указателя на объект. Можно ли это как то реализовать на mql5?