Erros, bugs, perguntas - página 1870

 
Slava:
E isso não deveria ser possível.
Mas costumava ser possível!
 
Tentei resolver o problema
template <typename T>
class CLASS_COPY
{
public:
  T Data;

  CLASS_COPY( const T &Value )
  {
    Data = Value;
  }
};

template <typename T1, typename T2>
void Copy( T1 &ObjectDst, const T2 &ObjectSrc )
{
   const CLASS_COPY<T2> Object(ObjectSrc);
   const CLASS_COPY<T1>* ObjectCopy = dynamic_cast<const CLASS_COPY<T1>*>(&Object);
   
   ObjectDst = ObjectCopy.Data; // invalid pointer access
}

Compila sem problemas, mas falha na execução com um erro. Como escrever agora a função de cópia?

 

DLLs que costumavam funcionar já não funcionam. As DLL's são de 64 bit. Os mesmos dlls x32 em MT4 - trabalho.

Windows 10 Home (PC baseado em x64), 1703, MT5 bild 1589
 
fxsaber:
Tentei escapar-me a isso

Compila sem problemas, mas falha na execução com um erro. Como escrever agora a função de cópia?

Se o dll não é crítico, então memcpy. Ou pode esperar pelo sindicato.

Bem, na verdade, é divertido. Os próprios criadores chamaram às estruturas de fundição uma alternativa padrão aos sindicatos e agora podem não as fundir, mas ainda não os sindicatos.

 
De que edifício são aceites no mercado os EX5s?
 
Комбинатор:

Em geral, é claro que é divertido. As estruturas de fundição foram chamadas uma alternativa padrão à união pelos próprios criadores, agora não se pode fundir e as associações ainda não o são, é isso?

Assim, com o advento da união será impossível de lançar. Só serão possíveis casos simples.
 
fxsaber:

Como escrever agora a função de cópia?

Como uma perversão completa para utilizar ficheiros, mas nativamente
FileReadStruct - Файловые операции - Справочник MQL4
FileReadStruct - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileReadStruct - Файловые операции - Справочник MQL4
 
Комбинатор:
Como é completamente perversa a utilização de ficheiros, mas nativamente
Sim, isso é AMBOS.
 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

fxsaber, 2017.04.10 16:23

Criação de sobrecargas desnecessárias que conduzem a erros de compilação
template <typename T>
T Func()
{
  T Res;
  
  return(Res);
}

template <typename T>
void Func( T& Value )
{
  T Res = (MqlTick)Value;
}

void OnStart()
{
  Func<string>(); // без этой строки компилируется
  
  MqlTick Tick;
  
  Func(Tick);
}

O compilador está a tentar criar um

void Func( string& );
Porque é que este código não é compilado em 1589? Aqui não há fundição.
 
Комбинатор:

Se a dll não for crítica, então memcpy. Ou esperar pela união

Em geral, é claro, é engraçado. As estruturas de fundição foram chamadas pelos desenvolvedores como uma alternativa padrão à união, agora é impossível fundir e ainda não há uniões, certo?

sem mais nem menos.