OOP, plantillas y macros en mql5, sutilezas y usos - página 11

 
TheXpert:

elenco dinámico para la comparación? ¿Estás loco?

No me importa el tiempo de ejecución en este caso, el tipo puede ser definido de otras maneras también, por ejemplo, por una función virtual de anulación. El código fue escrito en el momento en 10 minutos para mostrar el principio y no es una variante de trabajo

 
Ilya Malev:

¿Para qué sirve la CBase? ¿Y por qué hay que comparar dos valores del mismo tipo?

Sí, no necesitas CBase aquí en absoluto. Tienes IComparer por alguna razón heredada de Number, aunque son entidades absolutamente diferentes. Comparer no es una interfaz para Number, es un objeto independiente que acepta dos números. Así que tu Comparer debería ser simplemente IComparer<T1,T2> y sin ningún Number y CBase
 
Cierto, otro cagón con ego.
 
La prepotencia es sólo cuando alguien se sube a una rama y empieza a lanzar caca. Una caca muy importante. Simplemente le escribí al compañero (no a ti) con el que estábamos discutiendo el tema de las plantillas, cómo veo esa implementación.
 
Ilya Malev:

Así que tienes un error semántico: las nociones Comparer y Comparable están mezcladas. El primero es un comparador (una clase independiente), mientras que el segundo es una interfaz para el objeto que se compara (es decir, lo compara con otro objeto). Este objeto puede heredar este

 
Alexey Navoykov:

Entonces tienes un error semántico. Se mezclan las nociones de Comparador y Comparable. El primero es un comparador (una clase independiente) y el segundo es una interfaz para el objeto que se compara (es decir, lo compara con otro objeto).

Mi Número es sólo el tipo Comparable, y la interfaz es el tipo Comparador, y de alguna manera están inteligentemente vinculados en Sharp también. En este caso funcionan a través de los demás. Te digo que no era mi objetivo copiar exactamente esa estructura allí. El objetivo aquí es mostrar cómo se puede hacer una interfaz basada en plantillas que necesariamente se hereda de una de las clases que se comparan. Ese es el mecanismo que vi contigo y me gustó.

 
Alexey Navoykov:
Tienes IComparer por alguna razón heredada de Number, aunque son entidades absolutamente diferentes.

Tengo Número aquí por el tipo de objeto de la clase base, bueno, muy a grandes rasgos, no me puse la meta de presentar una arquitectura de trabajo en 100 líneas. Pero de todos modos todo heredará de un ancestro común

 
Ilya Malev:

Aquí trabajan a través de los demás.

Pero no lo hace. No se pueden heredar entidades diferentes entre sí. Number puede heredar la interfaz IComparable, y también puede devolver IComparer para su tipo con un método separado.
 
Alexey Navoykov:
Number puede heredar la interfaz IComparable y también puede devolver IComparer para su tipo a través de un método separado.

El número no es realmente un número, ni siquiera tiene un campo de valor si te fijas. Sólo lo llamé así... Ok, si algo me funciona entonces me ofrezco a discutirlo, pero mientras tanto si mi ejemplo no encaja en absoluto simplemente no te molestes.

 
Ilya Malev:

El número no es realmente un número, ni siquiera tiene un campo de valor si te fijas. Sólo lo llamé así... De acuerdo, si termino con algo factible entonces me ofreceré a discutirlo, pero mientras tanto, si mi ejemplo no funciona en absoluto, déjalo fuera de tu cabeza

Vale, pero deberías pensar en los métodos abstractos, sin ellos parece muy poco fiable.
Razón de la queja: