OOP, modelos e macros em mql5, sutilezas e usos - página 11

 
TheXpert:

elenco dinâmico para comparação? Você está fora de si?

Não me interessa o tempo de execução neste caso, o tipo também pode ser definido de outras formas, por exemplo, através de uma função de substituição virtual. O código foi escrito no local em 10 minutos para mostrar o princípio e não é uma variante funcional

 
Ilya Malev:

Qual é o objetivo da CBase? E por que 2 valores do mesmo tipo devem ser comparados?

Sim, você não precisa de CBase aqui. Você tem o IComparer por alguma razão herdado do Number, embora sejam entidades absolutamente diferentes. Comparer não é uma interface para o Number, é um objeto independente que aceita dois números. Então seu Comparer deve ser apenas IComparer<T1,T2> e sem qualquer número e CBase
 
Certo, mais um merdoso com um ego.
 
A auto-importância é justamente quando alguém entra em um galho e começa a jogar cocô. Cocô muito importante. Eu simplesmente escrevi para o camarada (não para você) com quem estávamos discutindo o tema dos modelos, como eu vejo tal implementação.
 
Ilya Malev:

Então você tem um erro semântico: as noções Comparador e Comparável estão misturadas. A primeira é um comparador (uma classe independente), enquanto a segunda é uma interface para o objeto a ser comparado (ou seja, ele compara este com outro objeto). Este objeto pode herdar este

 
Alexey Navoykov:

Portanto, você tem um erro semântico. As noções Comparador e Comparável estão misturadas. A primeira é um Comparador (uma classe independente) e a segunda é uma interface com o objeto que está sendo comparado (ou seja, compara este com outro objeto).

Meu Número é apenas do tipo Comparável, e a interface é do tipo Comparador, e eles estão de alguma forma inteligentemente ligados em Sharp também. Neste caso, eles trabalham um através do outro. Estou lhe dizendo, não era meu objetivo copiar exatamente essa estrutura ali. O objetivo aqui é mostrar como se pode fazer uma interface baseada em modelos, que é necessariamente herdada de uma das classes que estão sendo comparadas. Esse é o mecanismo que eu vi com você e que eu gostei.

 
Alexey Navoykov:
Você tem a IComparer por alguma razão herdada da Number, embora sejam entidades absolutamente diferentes.

Eu tenho Número aqui pelo tipo de objeto da classe base, bem, muito grosso modo, eu não defini um objetivo de apresentar uma arquitetura de trabalho em 100 linhas. Mas tudo herdará de um ancestral comum de qualquer forma

 
Ilya Malev:

Aqui eles trabalham uns através dos outros.

O número pode herdar a interface IComparable e também pode devolver o IComparer para seu tipo em um método separado.
 
Alexey Navoykov:
O número pode herdar a interface IComparable e também pode devolver o IComparer para seu tipo através de um método separado.

Número não é realmente um número, ele nem mesmo tem um campo de valor se você notar. Eu acabei de chamá-lo assim... Ok, se alguma coisa que funcione para mim funcionar, então eu me ofereço para discuti-lo, mas entretanto, se meu exemplo não se encaixar em nada, simplesmente não se preocupe.

 
Ilya Malev:

Número não é realmente um número, ele nem mesmo tem um campo de valor se você notar. Eu acabei de chamá-lo assim... OK, se eu acabar com algo viável, então me ofereço para discuti-lo, mas enquanto isso, se meu exemplo não funcionar, simplesmente deixe isso fora de sua cabeça.

OK. Mas você deve pensar em métodos abstratos. Sem eles, parece muito pouco confiável.