Dans MQL5, il y a toujours de la place pour un exploit ! ;) - page 7

 
o_O:
peut-on utilisermemcpy?
 
Комбинатор:
peut-on utiliser memcpy ?

non )

Vous voyez, si vous devez faire quelques préparations avant d'appeler SendParam, il est plus facile d'envelopper int dans une classe CInt.

 
o_O:

Il n'y a pas de façon native de prendre un pointeur. Je veux dire que si vous n'utilisez pas le wrapper CInt dès le début, vous aurez du mal à gérer les pointeurs.

Eh bien, dans les plus, tu fais la cuisine aussi.


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

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

Prendre une adresse est une préparation. Au lieu de cela, ce sera

f(GetPtr(x)) plus vous devez passer le type

 
o_O:

Supposons qu'il existe une fonction dans une classe

SendParam(int type, void* param)

dans laquelle le type de paramètre (type) et le paramètre lui-même, ou plutôt un pointeur vers celui-ci (void*) sont passés.

Le paramètre peut être de n'importe quel type (classe ou type simple).

Le paramètre peut être de n'importe quel type (une classe ou un type simple).

quel est le problème, le vide juridique :
template<typename T>
void SendReceiveParam(T& param) ;
....
{
double dval = 10 ;
SendReceiveParam(dval) ;
int ival = 10 ;
SendReceiveParam(ival)
...
// ref sur l'objet structure
struct AAA { void operator=(int a) {} } ;
AAA struct_val ;
SendReceiveParam(struct_val) ;
}

d'en écrire un illégal via des pointeurs int ?
 
Je ne comprends toujours pas l'énoncé du problème. Apparemment, il n'y a pas de déclaration claire de ce que vous voulez atteindre, même dans l'exemple.
 
fxsaber:
Je ne comprends toujours pas l'état du problème. Apparemment, il n'y a pas de formulation claire de ce que nous voulons obtenir, même dans l'exemple.

J'ai déjà écrit deux fois que nous essayons de passer un pointeur à int dans le paramètre void*.

( les options de memcpy et de classe intermédiaire ont déjà été suggérées, pas besoin de les répéter).

 
o_O:

J'ai déjà écrit deux fois que nous essayons de passer un pointeur à int dans le paramètre void*.

(memcpy, les options de classe intermédiaire ont déjà été suggérées, pas besoin de les répéter)

Bon sang, au moins en syntaxe C, pouvez-vous me donner un exemple de code qui devrait fonctionner aussi en MQL ?
 
alexsis78:
quel est le problème, le vide juridique :
template<typename T>
void SendReceiveParam(T& param) ;

Sympa, mais ça ne va pas.

il ne peut pas passer NULL

 
fxsaber:
Merde, au moins en syntaxe C peut-on avoir un exemple de code qui devrait fonctionner en MQL également ?
void SendParam(void* );

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

int a=10;
SendParam(&a);
SendParam(NULL);
Merci pour l'exemple ! Mais je n'ai pas compris le but de l'utilisation - la commodité. Veuillez ajouter un autre morceau de SendParam pour voir comment un pointeur vers int, par exemple, veut être utilisé.
o_O:

magnifique, mais ça ne va pas.

Qu'est-ce qui est beau exactement ? Il semble s'agir d'une application frontale des modèles. Ou peut-être que je rate quelque chose ?