ООП, шаблоны и макросы в mql5, тонкости и приёмы использования - страница 7

 
Ilya Malev:

По-моему, не все так уж плохо. Не так уж много базовых основных интерфейсов в том же С#, по-моему (я не спец по С#), чтобы их методы нельзя было свести к одному базовому суперклассу, а потом наследовать кому что нужно

Что вы понимаете под "наследовать кому что нужно"?  Наследовать не весь класс, а его часть? )  Что-то я такого функционала не знаю
 
Alexey Navoykov:
Что вы понимаете под "наследовать кому что нужно"?  Наследовать не весь класс, а его часть? )  Что-то я такого функционала не знаю

Нет, я имел в виду определить много виртуальных функций и перегружать их в наследниках по мере необходимости.

 
Ilya Malev:

Нет, я имел в виду определить много виртуальных функций и перегружать их в наследниках по мере необходимости.

Это ж полный хаос и безконтрольность.  Интерфейсы определяют абстрактные методы, которые обязаны быть реализованы, а не "по необходимости". Этим достигается гарантия реализации данных методов у объекта.  А при вашем подходе, если где-то забыл перегрузить метод, то программа будет компилироваться как ни в чем не бывало, только вместо нужного метода будет вызваться пустышка.  Нормально так...
 
Alexey Navoykov:
Это ж полный хаос и безконтрольность.  Интерфейсы определяют абстрактные методы, которые обязаны быть реализованы, а не "по необходимости". Этим достигается гарантия реализации данных методов у объекта.  А при вашем подходе, если где-то забыл перегрузить метод, то программа будет компилироваться как ни в чем не бывало, только вместо нужного метода будет вызваться пустышка.  Нормально так...

Не пустышка, а исключение "not implemented". В С# сплошь и рядом вроде бы.

 
Alexey Navoykov:
... если где-то забыл перегрузить метод, то программа будет компилироваться как ни в чем не бывало, только вместо нужного метода будет вызваться пустышка.  Нормально так...

В MQL именно так все и работает, кстати;( 

 
Ilya Malev:

Не пустышка, а исключение "not implemented". В С# тоже сплошь и рядом вроде бы.

Да не суть.  Вы предлагаете отлавливать баги в процессе выполнения, тогда как эти баги можно (и нужно) отлавливать на стадии компиляции.
 
Vasiliy Sokolov:

В MQL именно так все и работает, кстати;( 

Имеете ввиду их стандартную библиотеку? )
 
Alexey Navoykov:
Да не суть.  Вы предлагаете отлавливать баги в процессе выполнения, тогда как эти баги можно (и нужно) отлавливать на стадии компиляции.

Думаю, что это по-любому лучше, чем громоздить конструкции типа template <,,,,,,,> для классов. Там мозги сломаются раньше, чем закончишь такую "систему классов" строить

 
Ilya Malev:

Думаю, что это по-любому лучше, чем громоздить конструкции типа template <,,,,,,,> для классов. Там мозги сломаются раньше, чем закончишь такую "систему классов" строить

Не соглашусь.  Я лучше поломаю мозги с компилятором, зато буду уверен, что моя программа гарантированно работает правильно, и вызывается рабочий метод, а не чёрти что.
 
Alexey Navoykov:
Не соглашусь.  Я лучше поломаю мозги с компилятором, зато буду уверен, что моя программа гарантированно работает правильно, и вызывается рабочий метод, а не чёрти что.

Если у всего этого есть простой базовый класс, который в основном везде и фигурирует, а потом идут динамик касты, то может и сработает )

Причина обращения: