私は学校で私に与えられたスレッドライブラリを使用していますが、メソッドへのポインタの配列の参照を渡す方法を理解できないか、ポインタ配列の逆参照および使用。ポインタ配列のポインタを参照しない
私は(Iを信じて)理解の状況はこれです:
int main(void)
{
Foo* bar = new Foo();
// Passing instance of Foo pointer by reference
CThread *myThread = new CThread(MyFunction, ACTIVE, &bar);
return 0;
}
UINT __stdcall MyFunction(void *arg)
{
Foo* bar = *(Foo*)(arg);
return 0;
}
私はFooのオブジェクトへのポインタを作成してボイドポインタを受け取りMyFunctionのを、実行中のスレッドを参照することによって、それを渡していますその議論。 MyFunctionはFooポインタに "arg"をキャストし、元のオブジェクトを取得するためにそれを逆参照します。
私が代わりに一つだけのFooのポインタの配列を渡したいとき私の問題が発生:
int main(void)
{
Foo* barGroup[3] =
{
new Foo(),
new Foo(),
new Foo()
};
// Passing instance of Foo pointer by reference
CThread *myThread = new CThread(MyFunction, ACTIVE, &barGroup);
return 0;
}
UINT __stdcall MyFunction(void *arg)
{
// This is wrong; how do I do this??
Foo* barGroup[3] = *(Foo[]*)(arg);
return 0;
}
なぜポインタの 'addressof'を渡していますか? –
参照渡しではありません。オブジェクトへのポインタへのポインタを渡しています。また、なぜあなたは 'void * 'を使っていますか? –
'*(Foo *(*)[3])'しかし、なぜですか? –