Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Afinal, a cadeia sucessória poderia ser tudo o que você quiser: mesmo Interface<CBase>, mesmo Interface<C<B<A<CBase>>>>, há toneladas de variantes. Teríamos que lançar CBase seqüencialmente para todas as variantes possíveis, o que é irrealista.
Lembro-me que eu ia implementar o armazenamento de informações sobre interfaces no próprio objeto de classe e, além dos blocos de interface existentes, fazer classes de interface independentes que funcionariam como um invólucro sobre nosso bloco. Mas então cheguei à conclusão de que tudo isso era desnecessário e desnecessário. Na prática, eu nunca vi a necessidade de lançar uma classe base para qualquer interface, simplesmente não faz sentido. A única opção é descobrir se a classe suporta esta interface para fins de depuração, mas não precisamos de fundição para isso.
Na minha opinião, deveríamos armazenar a interface na interface. Interface<T,CBase>::GetComparer().Compare(CBase &a, T& b); eu esbocei algum código lá por exemplo, mas eu realmente não quero desorganizar o fórum com muitas letras.
Na minha opinião, a interface deveria ser armazenada na própria interface. Interface<T,CBase>::GetComparer().Compare(CBase &a, T& b); eu esbocei algum código lá por exemplo, mas eu realmente não quero desorganizar o fórum com muitas letras.
Vá em frente e afixe isso. De qualquer forma, não se trata de lixo, mas de um assunto de discussão. Mas, nesse fio a partir do qual a discussão foi transferida para cá, seria inapropriado.
ok)
ok)
Por que aIComparer::Compare(CBase &op1, T &op2) método lá se ambos os argumentos devem ser T
E por que láIComparer::Compare(CBase &op1, T &op2) método se ambos os argumentos devem ser T
Só é possível comparar os mesmos tipos? Minha suposição é que não é. Faça T==CBase e haverá ambos os argumentos T )
Ah, entendi, então você entendeu tudo errado. A classe IComparer em seu caso deveria ser como IComparer<T1,T2,CBase>. Assim, o método também será:
E quando você herdar a classe você irá sobrecarregar exatamente este método, tudo se encaixará no lugar.Ah, estou vendo, então você entendeu tudo errado. A classe IComparer em seu caso deveria ser como IComparer<T1,T2,CBase>:
E quando você herda uma classe, você sobrecarrega este método, tudo se encaixa no lugar.E qual é o significado deste CBase? E por que exatamente dois valores de um tipo devem ser comparados?
elenco dinâmico para comparação? você está fora de si?
uma função puramente virtual é escrita assim -virtual int CompareTo(Número *par) = 0 ;
é o compilador que será amaldiçoado e não o substituto da exceção autoescrita.
uma função puramente virtual é escrita assim -virtual int CompareTo(Número *par) = 0;
o compilador será amaldiçoado ao invés do substituto da exceção autoescrita.
Eu não preciso do compilador para jurar porque eu manipulo constantemente as classes do tipo base (Número neste exemplo). Se o compilador jurar, o código não funcionará de forma alguma