Errores, fallos, preguntas - página 1870

 
Slava:
Y no debería ser posible.
Pero antes era posible.
 
Traté de resolverlo
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 sin problemas, pero se bloquea en la ejecución con un error. ¿Cómo se escribe ahora la función de copia?

 

Los DLL que antes funcionaban ya no lo hacen. Las DLL son de 64 bits. Los mismos dlls x32 en MT4 - funcionan.

Windows 10 Home (PC x64), 1703, MT5 bild 1589
 
fxsaber:
Intenté escabullirme

Compila sin problemas, pero se bloquea en la ejecución con un error. ¿Cómo se escribe ahora la función de copia?

Si la dll no es crítica, entonces memcpy. O puede esperar a la unión.

Bueno, en realidad es divertido. Los propios desarrolladores llamaron a las estructuras de fundición una alternativa estándar a las uniones y ahora pueden no fundirlas, pero todavía no a las uniones.

 
¿De qué construcción a qué EX5 se aceptan en el mercado?
 
Комбинатор:

En general, por supuesto que es divertido. Las estructuras de fundición fueron llamadas una alternativa estándar a la unión por los propios desarrolladores, ahora no se puede fundir y las asociaciones aún no lo son, ¿verdad?

Así que con la llegada de la unión será imposible el reparto. Sólo serán posibles los casos sencillos.
 
fxsaber:

¿Cómo se escribe ahora la función de copia?

Como una completa perversión para utilizar archivos, pero de forma nativa
FileReadStruct - Файловые операции - Справочник MQL4
FileReadStruct - Файловые операции - Справочник MQL4
  • docs.mql4.com
FileReadStruct - Файловые операции - Справочник MQL4
 
Комбинатор:
Qué perverso es utilizar archivos, pero de forma nativa
Sí, eso es AMBOS.
 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Bichos, errores, preguntas

fxsaber, 2017.04.10 16:23

Creación de sobrecargas innecesarias que conducen a errores de compilación
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);
}

El compilador está tratando de crear un

void Func( string& );
¿Por qué este código no compila en 1589? Aquí no hay casting.
 
Комбинатор:

Si la dll no es crítica, entonces memcpy. O esperar a la unión

En general, por supuesto, es divertido. Las estructuras de fundición fueron llamadas por los desarrolladores como una alternativa estándar a la unión, ahora es imposible fundir y no hay uniones todavía, ¿verdad?

así de fácil.