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

 
Como remover o limite de 8 elementos no número de argumentos macro, estou com falta de 8 elementos?
 
Seric29:
Como remover o limite de 8 elementos no número de argumentos macro, estou com falta de 8 elementos?

Uma macro em uma macro deve ser escrita.

Por que não apenas escrever funções?

 

é possível usar uma macro para remover/eliminar o modificador constante ? e desativá-lo quando necessário ?

ZS: existe um código:

class COrder {
private:
//--- const to send order
   const int         c_cmd;
   const double      c_volume;
   double            c_price;
   const int         c_magic;
   const int         c_stoploss;
   const int         c_takeprofit;
}

decidiu escrever em campos de arquivo de classe e restaurar do arquivo através do construtor, mas o modificador const const const irá interferir com isso

o código está quase terminado, em teoria eu posso apagar todas as constantes, mas... Mas eu não quero perder uma oportunidade de mais modificações, e const é muito útil durante as modificações de código.

 
Igor Makanu:

é possível usar uma macro para remover/eliminar o modificador constante ? e desativá-lo quando necessário ?

#define const
 
fxsaber:

Hmm, tão simples assim?!

como limitar a seção do código fonte onde eu quero aplicar a macro?

 
Igor Makanu:

como limitar a área do código fonte onde eu quero aplicar esta macro?

#undef const
 
Igor Makanu:

é possível usar uma macro para remover/eliminar o modificador constante ? e desativá-lo quando necessário ?

ZS: existe um código:

decidiu escrever em campos de arquivo de classe e restaurar do arquivo através do construtor, mas o modificador const const const irá interferir com isso

o código está quase terminado, em teoria eu posso apagar todas as constantes, mas... Mas eu não quero perder uma oportunidade de mais modificações, e const é muito útil durante as modificações de código.

Qual é a idéia? Em todos os lugares c_cmd é uma constante e uma função não é uma constante? Se assim for, é a UB (sim μl não permitirá isso), bem lá por causa de segmentos lidos apenas, otimizações de compiladores ...

 
fxsaber:

Hmm, mais uma vez simples.

OBRIGADO!

Vitória:

Qual é a idéia? O c_cmd é uma constante em todos os lugares e uma função não é uma constante? Se assim for, é a UB (sim μl não permitirá isso), bem lá por causa de segmentos lidos apenas, otimizações de compiladores ...

Decidi salvar todos os campos de 2 classes com todas as configurações e estados atuais nelas ao fazer um novo pedido (TS de várias ordens).


Eu decidi usar uma estrutura separada com campos por nomes de campo de classes a serem salvos - eu apenas copiarei a estrutura em 2 minutos no editor)), e é conveniente salvar os campos com uma única chamada de FileWriteStruct()

e para restaurar o estado, usarei este construtor, por exemplo:

COrder::COrder(SRecovery &property)
:  c_cmd(property.c_cmd),
   c_volume(property.c_volume),
   c_price(property.c_price),
   c_magic(property.c_magic),
   c_stoploss(property.c_stoploss),
   c_takeprofit(property.c_takeprofit)
{

}

nesta chamada do construtor, os campos constantes podem ser inicializados

a restauração dos dados só é necessária para recarregar o terminal

Ainda não o fiz, mas 99% de certeza que funcionará sem problemas - eu não queria introduzir um novo tipo de dados (estrutura de armazenamento) - mas será mais fácil e posso ler o código mais tarde....comentários não são nossos para escrever - ))))

 
Igor Makanu:

Hmm, mais uma vez simples.

OBRIGADO!

Decidi salvar todos os campos de 2 classes com todas as configurações e estados atuais nelas ao fazer um novo pedido (TS de várias ordens).


Eu decidi usar uma estrutura separada com campos por nomes de campo de classes a serem salvos - eu apenas copiarei a estrutura em 2 minutos no editor)), e é conveniente salvar os campos com uma única chamada de FileWriteStruct()

e para restaurar o estado, usarei este construtor, por exemplo:

nesta chamada do construtor, os campos constantes podem ser inicializados

a restauração dos dados só é necessária para recarregar o terminal

Ainda não o fiz, mas tenho 99% de certeza que vai funcionar sem problemas - não queria introduzir um novo tipo de dados (estrutura de armazenamento) - mas vai ser mais fácil e posso ler o código mais tarde....comentários não são nossos para escrever - ))))

Se você não quiser criar uma estrutura temporária para escrever, tente escrever os campos no arquivo um a um e depois leia-os do construtor da mesma forma. Não é necessariamente mais rápido, mas o código vai parecer definitivamente "mais feio".
 
fxsaber:
Errado. Ela precisa de uma contrapartida const_cast, que não tem.