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).
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?
si può usare memcpy?
no )
Vedete, se dovete fare alcune preparazioni prima di chiamare SendParam, è più facile avvolgere int in qualche classe CInt.
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.
{
//do something
}
{
int x = 5;
f(&x);
}
Prendere un indirizzo è una preparazione. Invece sarà
f(GetPtr(x)) in più dovete passare il tipo
Supponiamo che ci sia una funzione in una classe
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).
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?
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).
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)
qual è il problema, vuoto giuridico:
template<typename T>
void SendReceiveParam(T& param);
bello, ma non si adatta.
non può passare NULL
Merda, almeno nella sintassi C possiamo avere un codice di esempio che dovrebbe funzionare anche in MQL?
int a=10;
SendParam(&a);
SendParam(NULL);
int a=10;
SendParam(&a);
SendParam(NULL);
bello, ma non si adatta.