In MQL5 c'è sempre spazio per un exploit! ;) - pagina 7

 
o_O:
si può usarememcpy?
 
Комбинатор:
si può usare memcpy?

no )

Vedete, se dovete fare alcune preparazioni prima di chiamare SendParam, è più facile avvolgere int in qualche classe CInt.

 
o_O:

Non c'è un modo nativo per prendere un puntatore. Cioè, se non usate il wrapper CInt dall'inizio, avrete difficoltà a gestire i puntatori.

Beh, nei lati positivi, si fa anche la cucina.


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

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

Prendere un indirizzo è una preparazione. Invece sarà

f(GetPtr(x)) in più dovete passare il tipo

 
o_O:

Supponiamo che ci sia una funzione in una classe

SendParam(int type, void* param)

in cui vengono passati il tipo di parametro (type) e il parametro stesso, o piuttosto un puntatore ad esso (void*).

Il parametro può essere di qualsiasi tipo (classe o tipo semplice).

Il parametro può essere di qualsiasi tipo (una classe o un tipo semplice).

qual è il problema, vuoto giuridico:
template<typename T>
void SendReceiveParam(T& param);
....
{
doppio dval = 10;
SendReceiveParam(dval);
int ival = 10;
SendReceiveParam(ival)
...
// rif sull'oggetto struttura
struct AAA { void operator=(int a) {} };
AAA struct_val;
SendReceiveParam(struct_val);
}

scrivere uno illegale tramite puntatori int?
 
Continuo a non capire l'affermazione del problema. Apparentemente non c'è una chiara dichiarazione di ciò che si vuole ottenere, anche nell'esempio.
 
fxsaber:
Ancora non capisco la condizione del problema. Apparentemente, non c'è una formulazione chiara di ciò che vogliamo ottenere, anche nell'esempio.

Ho già scritto due volte che cerchiamo di passare un puntatore a int nel parametro void*.

(le opzioni memcpy e classe intermedia sono già state suggerite, non c'è bisogno di ripeterle).

 
o_O:

Ho già scritto due volte che cerchiamo di passare un puntatore a int nel parametro void*.

(memcpy, le opzioni della classe intermedia sono già state suggerite, non c'è bisogno di ripeterle)

Accidenti, almeno nella sintassi C puoi darmi un esempio di codice che dovrebbe funzionare anche in MQL?
 
alexsis78:
qual è il problema, vuoto giuridico:
template<typename T>
void SendReceiveParam(T& param);

bello, ma non si adatta.

non può passare NULL

 
fxsaber:
Merda, almeno nella sintassi C possiamo avere un codice di esempio che dovrebbe funzionare anche in MQL?
void SendParam(void* );

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

int a=10;
SendParam(&a);
SendParam(NULL);
Grazie per l'esempio! Ma non ho colto lo scopo dell'uso: la convenienza. Aggiungete un altro pezzo di SendParam per vedere come un puntatore a int, per esempio, vuole essere usato.
o_O:

bello, ma non si adatta.

Cos'è esattamente bello? Sembra essere un'applicazione frontale di modelli. O forse mi manca qualcosa?