Errori, bug, domande - pagina 1870

 
Slava:
E non dovrebbe essere possibile.
Ma una volta era possibile!
 
Ho cercato di risolvere il 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 senza problemi, ma si blocca all'esecuzione con un errore. Come scrivere la funzione Copy ora?

 

Le DLL che funzionavano prima non funzionano più. Le DLL sono a 64 bit. Stessa dlls x32 su MT4 - lavoro.

Windows 10 Home (PC basato su x64), 1703, MT5 bild 1589
 
fxsaber:
Ho tentato di liberarmi.

Compila senza problemi, ma si blocca all'esecuzione con un errore. Come scrivere una funzione Copy ora?

Se dll non è critico, allora memcpy. Oppure potete aspettare l'unione.

Beh, in realtà è divertente. Gli stessi sviluppatori hanno chiamato le strutture cast un'alternativa standard alle unioni e ora possono non castarle ma non ancora unioni.

 
Da quale costruzione a quali EX5 sono accettati nel mercato?
 
Комбинатор:

In generale, certo che è divertente. Il casting delle strutture è stato definito dagli stessi sviluppatori un'alternativa standard all'unione, ora non si può fare il cast e le associazioni non lo sono ancora, giusto?

Quindi con l'avvento dell'unione sarà impossibile lanciare. Solo i casi semplici saranno possibili.
 
fxsaber:

Come scrivere la funzione Copy ora?

Come una completa perversione per usare i file, ma nativamente
FileReadStruct - Файловые операции - Справочник MQL4
FileReadStruct - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileReadStruct - Файловые операции - Справочник MQL4
 
Комбинатор:
Come è completamente perverso usare i file, ma nativamente
Sì, sono entrambi.
 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

fxsaber, 2017.04.10 16:23

Creare sovraccarichi non necessari che portano a errori di compilazione
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);
}

Il compilatore sta cercando di creare un

void Func( string& );
Perché questo codice non compila nel 1589? Non c'è nessun casting qui.
 
Комбинатор:

Se la dll non è critica, allora memcpy. O aspettare l'unione

In generale, naturalmente, è divertente. Il casting delle strutture era chiamato dagli sviluppatori come un'alternativa standard all'unione, ora è impossibile castare e non ci sono ancora unioni, giusto?

proprio così.