ООП, шаблоны и макросы в mql5, тонкости и приёмы использования - страница 11
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
dynamic cast для сравнения?? вы в своем уме?
Меня не заботит в данном случае время выполнение, определять тип можно и другими способами, например, виртуальной переопределяемой функцией. Код писался на коленке за 10 минут для того, чтобы показать принцип, и не является каким-либо рабочим вариантом
А смысл в этом CBase? И почему должны сравниваться именно 2 значения одного типа?
Т.е. у вас смысловая ошибка. Смешаны в кучу понятия Comparer и Comparable. Первое - это сравниватель (самостоятельный класс). А второй - это интерфейс для сравниваемого объекта (т.е. сравнивает this с другим объектом). Вот его объект может наследовать
Т.е. у вас смысловая ошибка. Смешаны в кучу понятия Comparer и Comparable. Первое - это сравниватель (самостоятельный класс). А второй - это интерфейс для сравниваемого объекта (т.е. сравнивает this с другим объектом).
У меня как раз Number это по типу Comparable, а интерфейс по типу Comparer, причем они там в шарпе тоже как-то хитро связаны. Тут они работают друг через друга. Я же говорю что не было цели в точности скопировать ту конструкцию, которая там. Здесь цель - показать, как можно сделать интерфейс на основе шаблонов, который обязательно наследуется от одного из сравниваемых классов. Именно этот механизм я увидел у Вас и он мне понравился.
У вас IComparer зачем-то наследуется от Number, хотя это совершенно разные сущности.
У меня Number тут по типу базового класса object, ну очень приблизительно я же не ставил целью на 100 строчках рабочую архитектуру представить. Но там все по любому от одного общего предка будет наследоваться
Тут они работают друг через друга.
Но так не делается. Нельзя разные сущности наследовать друг от друга. Number может наследовать интерфейс IComparable, и он также может возвращать IComparer для своего типа отдельным методом.
Number это не число на самом деле, у него даже поля значения нет если Вы заметили. Просто так назвал... Ладно если что-то рабочее у меня в итоге получится тогда предложу это обсудить, а пока если совсем не подошел мой пример просто не берите в голову
Number это не число на самом деле, у него даже поля значения нет если Вы заметили. Просто так назвал... Ладно если что-то рабочее у меня в итоге получится тогда предложу это обсудить, а пока если совсем не подошел мой пример просто не берите в голову