Desejos para MT5 - página 103

 
A100:

ME5 dá um erro na compilação, na minha opinião injustificado.


Ponto justo - serve.
 

Gostaria que o enumero predefinido do formulário ENUM_XXX fosse realmente numerado 1, enquanto actualmente é numerado por defeito, ou seja, 0. A questão não é alterar os padrões, mas sim substituir

enum ENUM_ORDER_TYPE {
        ORDER_TYPE_BUY,
        ORDER_TYPE_SELL, ...
};

deve ser

enum ENUM_ORDER_TYPE {
        ORDER_TYPE_BUY = 1,
        ORDER_TYPE_SELL, ...
};

O raciocínio é o seguinte - um exemplo:

MqlTradeRequest request { ...
        ENUM_ORDER_TYPE     type; ...
}

Quando analiso o valor request.type algures no código, se for igual a 0, não consigo compreender se não foi inicializado ou se foi inicializado.

request.type = ORDER_TYPE_BUY;

Este é o caso da maioria dos enumeros predefinidos do formulário ENUM_ XXX equivalente ao RadioButton e requer uma quantidade excessiva de complexidade para lidar correctamente com a situação actual

 
Infelizmente, isto não é possível devido à manutenção da compatibilidade com o resto das línguas onde a numeração é do zero.
 
Renat: Infelizmente, isto não é possível devido à manutenção da compatibilidade com outras línguas onde a numeração é de zero.

O que o impede de escrever um identificador neutro como primeiro membro de uma enumeração pré-definida? Por exemplo:

enum ENUM_ORDER_TYPE 
  {
   ORDER_TYPE_undefined,
   ORDER_TYPE_BUY,
   ORDER_TYPE_SELL, 
   ...
  };

Tanto a "numeração a partir do zero" será preservada, e as variáveis não inicializadas podem ser facilmente avaliadas.

 
Yedelkin:

O que o impede de escrever um identificador neutro como primeiro membro de uma enumeração pré-definida? Por exemplo:

E se pensarmos nos outros que já estão a utilizar o conjunto original de enumeração? Isto para não mencionar o aspecto perplexo de todo o complexo do servidor.

Em geral, a questão não é colocada correctamente. O criador não deve ser preguiçoso e forçar o resto do mundo a ajustar-se a si próprio, autodestruindo esse mesmo mundo.

 
Renat: E se pensarmos em outros que já estão a utilizar o conjunto original de enumeração?

Bem, pensemos novamente, "sobre o resto". Para que são nomeados identificadores constantes? - Correcto, a fim de utilizar estes identificadores. Além disso, para utilizar estes identificadores, não é absolutamente necessário saber que valores específicos são atribuídos aos membros da enumeração. Ou pressupõe que os programadores competentes utilizam identificadores em vez de descobrirem os valores por defeito dos membros da enumeração, e depois fazem verificações com base nesses valores por defeito?

Renat : Isto para não mencionar a visão desconcertante de todo o complexo de servidores.

Ou seja, não é difícil implementar a sugestão em si, pois não?

Renat : Na verdade, esta pergunta é colocada incorrectamente. O desenvolvedor não deve ser preguiçoso e forçar o resto do mundo a ajustar-se a si próprio através da autodestruição deste mesmo mundo.

O autor deste fio não tinha a intenção de destruir o mundo dos outros através da sua preguiça. Ele apenas fez uma sugestão específica para melhorar. E explicou que o valor zero acaba por ficar sobrecarregado.

 

Gostaria de introduzir pelo menos uma classe como âmbito de enumeração de elementos,

void test1() { enum ENUM_1 { ELEM1 }; }
void test2() { enum ENUM_2 { ELEM1 }; } //ошибка

class A {
        enum ENUM_A { ELEM1 };
};
class B {
        enum ENUM_B { ELEM1 }; //ошибка
};

Justificação para as aulas: é necessário inventar um nome único que possa entrar inesperadamente em conflito com a biblioteca (incluindo terceiros) e/ou nomes pré-definidos. Além disso, poderia usar nomes semelhantes de SL, TP, PRICE, etc. enumerar elementos em várias classes simultaneamente, sem medo de conflitos.

Fundamentação para funções: não crítica, mas ao mesmo tempo

 
A100:

Gostaríamos de introduzir um âmbito para os elementos enumerados

Justificação para as aulas: é preciso inventar um nome único que pode entrar inesperadamente em conflito com uma biblioteca e/ou nome predefinido. Além disso, poderia usar nomes semelhantes para SL, TP, PREÇO, etc. enumerar elementos em várias classes ao mesmo tempo, sem medo de conflitos.

Fundamentação para funções: não crítica, mas ao mesmo tempo

o que dizer disto em C++ ?
 
sergeev:
Mas como é que é em C++ ?

É daí que vêm as pernas - um paradoxo, mas só agora (quando há restrições), comecei a perceber porque é que tudo era feito ali :)

Claro que poderia passar sem ele - escrever um nome único para todas as classes, mas para grandes programas, e especialmente para bibliotecas destinadas a uso geral - não é uma opção

 
A100: Gostaria que os enumeros pré-definidos do formulário ENUM_XXX fossem na realidade equivalentes a RadioButtons a serem numerados 1, enquanto que agora são numerados por defeito, ou seja, 0.

Experimente isto (para "inicialização"):

VALOR_VALOR ESCRITO.

Uma constante pode ser implicitamente moldada a qualquer tipo de enumeração.

-1