¡En MQL5 siempre hay espacio para un exploit ! ;) - página 7

 
o_O:
¿se puede utilizarmemcpy?
 
Комбинатор:
¿se puede utilizar memcpy?

no )

Verás, si tienes que hacer algunos preparativos antes de llamar a SendParam, es más fácil envolver el int en alguna clase CInt.

 
o_O:

No hay una forma nativa de tomar un puntero. Es decir, si no usas la envoltura de CInt desde el principio, te será difícil manejar los punteros.

Bueno, en las ventajas, tú también cocinas.


void f(int* value)
{
   //do something
}

{
   int x = 5;
   f(&x);
}

Tomar una dirección es una preparación. En su lugar, va a ser

f(GetPtr(x)) y además hay que pasar el tipo

 
o_O:

Supongamos que existe una función en una clase

SendParam(int type, void* param)

en el que se pasa el tipo de parámetro (type) y el propio parámetro, o más bien un puntero a él (void*).

El parámetro puede ser de cualquier tipo (clase o tipo simple).

El parámetro puede ser de cualquier tipo (una clase o un tipo simple).

cuál es el problema, el vacío legal:
template<typename T>
void SendReceiveParam(T& param);
....
{
doble dval = 10;
SendReceiveParam(dval);
int ival = 10;
SendReceiveParam(ival)
...
// ref en el objeto de la estructura
struct AAA { void operator=(int a) {} };
AAA struct_val;
SendReceiveParam(struct_val);
}

¿escribir una ilegal a través de punteros int?
 
Sigo sin entender el planteamiento del problema. Aparentemente no hay una declaración clara de lo que se quiere conseguir, ni siquiera en el ejemplo.
 
fxsaber:
Sigo sin entender el estado del problema. Aparentemente, no hay una formulación clara de lo que queremos conseguir, ni siquiera en el ejemplo.

Ya he escrito dos veces que intentamos pasar un puntero a int en el parámetro void*.

(las opciones de memcpy y la clase intermedia ya han sido sugeridas, no es necesario repetirlas).

 
o_O:

Ya he escrito dos veces que intentamos pasar un puntero a int en el parámetro void*.

(memcpy, las opciones de la clase intermedia ya han sido sugeridas, no es necesario repetirlas)

Maldita sea, al menos en la sintaxis de C ¿me puedes dar un ejemplo de código que debería funcionar también en MQL?
 
alexsis78:
cuál es el problema, el vacío legal:
template<typename T>
void SendReceiveParam(T& param);

bonito, pero no encaja.

no puede pasar NULL

 
fxsaber:
Mierda, al menos en la sintaxis de C ¿podemos tener un código de ejemplo que debería funcionar en MQL también?
void SendParam(void* );

int a=10;
SendParam(&a);
SendParam(NULL);
 
o_O:
void SendParam(void* );

int a=10;
SendParam(&a);
SendParam(NULL);
Gracias por el ejemplo. Pero no capté el propósito de uso: la comodidad. Por favor, añada otra pieza de SendParam para ver cómo se quiere utilizar un puntero a int, por ejemplo.
o_O:

hermoso, pero no encaja.

¿Qué es exactamente la belleza? Parece ser una aplicación frontal de las plantillas. ¿O quizás me estoy perdiendo algo?