MQL5では、常に悪用される可能性があるのです。 ;) - ページ 7

 
o_O:
memcpy は使えますか?
 
Комбинатор:
memcpy は使えますか?

ノー)

もし、SendParamを呼び出す前に何らかの準備をしなければならないのであれば、intをCIntクラスでラップするのが簡単です。

 
o_O:

ポインターの取り方はネイティブではありません。というか、最初からCIntラッパーを使わないと、ポインタの扱いに苦労しますよ。

まあ、プラスアルファで言えば、料理もするわけですからね。


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

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

アドレスを取るのは準備です。代わりになるのは

f(GetPtr(x)) に加えて,型も渡さなければなりません.

 
o_O:

クラスに関数があるとします。

SendParam(int type, void* param)

で,パラメータの型(type)とパラメータ自身,あるいはパラメータへのポインタ(void*)が渡されます。

パラメータは任意の型(クラスまたは単純型)でよい。

パラメータは任意の型(クラスまたは単純型)でよい。

何が問題なのか、法的空白。
template<typename T>
void SendReceiveParam(T& param)。
....
{
double dval = 10;
SendReceiveParam(dval)とする。
int ival = 10;
SendReceiveParam(ival)
...
// 構造体オブジェクトの参照
struct AAA { void operator=(int a) {}.};
AAA struct_val。
SendReceiveParam(struct_val)。
}

intポインタを介して不正なものを書き込む?
 
やはり問題文が理解できない。どうやら例題にも、何を実現したいのかが明確に書かれていないようです。
 
fxsaber:
問題の状態がまだよくわからない。どうやら、例のものでも、何を得たいのかが明確に定式化されていないようです。

void*パラメータにint型へのポインタを渡そうとしたことは、すでに2回書きました。

(memcpy と中間クラスのオプションは既に提案されているので、繰り返す必要はない)。

 
o_O:

void*パラメータにint型へのポインタを渡そうとしたことは、すでに2回書きました。

(memcpy、中間クラスのオプションは既に提案されているので、繰り返す必要はありません)

くそっ、少なくともC言語の構文で、MQLでも動作するはずのコードの例を教えてくれませんか?
 
alexsis78:
何が問題なのか、法的空白。
template<typename T>
void SendReceiveParam(T& param)。

はいいのですが、サイズが合いません。

はNULLを渡すことができません。

 
fxsaber:
くそー、せめてC言語の構文で、MQLでも動作するようなサンプルコードを用意できないか?
void SendParam(void* );

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

int a=10;
SendParam(&a);
SendParam(NULL);
お手本をありがとうございましたしかし、使用目的である「利便性」がつかめなかった。例えばintへのポインタをどのように使用したいのか、SendParamからもう一枚追加してください。
o_o

美しいが、サイズが合わない。

美しいとは、いったい何なのか。テンプレートを真正面から応用して いるようです。それとも、何か見落としているのでしょうか?