Erreurs, bugs, questions - page 1870

 
J'ai essayé d'arranger ça
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
}

Compile sans problème, mais se plante à l'exécution avec une erreur. Comment écrire la fonction de copie maintenant ?

 

Les DLL qui fonctionnaient auparavant ne fonctionnent plus. Les DLL sont 64 bits. Mêmes dlls x32 sur MT4 - fonctionnent.

Windows 10 Home (PC basé sur x64), 1703, MT5 bild 1589
 
fxsaber:
J'ai essayé de m'en sortir.

Il compile sans problème, mais se plante à l'exécution avec une erreur. Comment écrire une fonction de copie maintenant ?

Si la dll n'est pas critique, alors memcpy. Ou vous pouvez attendre l'union.

En fait, c'est amusant. Les développeurs eux-mêmes ont appelé les structures cast une alternative standard aux unions et maintenant ils ne peuvent pas les cast et ne l'ont pas encore fait.

 
De quelle construction à quels EX5 sont acceptés sur le marché ?
 
Комбинатор:

En général, bien sûr, c'est amusant. Les développeurs eux-mêmes appelaient le casting des structures une alternative standard à l'union, maintenant vous ne pouvez pas faire de casting et les associations ne le sont pas encore, n'est-ce pas ?

Ainsi, avec l'avènement de l'union, il sera impossible de faire un casting. Seuls les cas simples seront possibles.
 
fxsaber:

Comment écrire la fonction de copie maintenant ?

Comme une perversion complète d'utiliser des fichiers, mais nativement
FileReadStruct - Файловые операции - Справочник MQL4
FileReadStruct - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileReadStruct - Файловые операции - Справочник MQL4
 
Комбинатор:
C'est complètement pervers d'utiliser des fichiers, mais en natif.
Oui, c'est les DEUX.
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.04.10 16:23

Création de surcharges inutiles qui conduisent à des erreurs de compilation
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);
}

Le compilateur essaie de créer un

void Func( string& );
Pourquoi ce code ne compile-t-il pas en 1589 ? Il n'y a pas de casting ici.
 
Комбинатор:

Si la dll n'est pas critique, alors memcpy. Ou attendez le syndicat

En général, bien sûr, c'est drôle. Les développeurs ont appelé les structures de casting comme une alternative standard à l'union, maintenant il est impossible de casting et il n'y a pas encore d'union, n'est-ce pas ?

juste comme ça.

 
Slava:
Et il ne devrait pas être possible de


1) Quand est-il prévu d'introduire l'union ?

2. les typedefs seront-ils également saisis ?

3. est-il prévu d'introduire des pointeurs sur les types fondamentaux ?