Я использую библиотеку потоков, данную мне в школе, и не могу понять, как передать ссылку на массив указателей на метод, или, скорее, у меня возникли проблемы с разыменованием и использованием массива указателей.
Ситуация, которую я (я верю) понимаю:
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, который принимает указатель void в качестве аргумента. Затем MyFunction приводит «arg» к указателю Foo и отменяет ссылки на него, чтобы получить исходный объект.
Моя проблема возникает, когда я хочу передать массив указателей 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;
}