Здравствуйте,
вопрос по c++

void* array[2] = {&a, &b};
func(void* array) {
как использовать a и b в функции(вытащить их из массива)?
}
пишет void* unknown size и т п

@темы: C++

Комментарии
02.05.2011 в 20:38

Гудийр
void* указатель не может быть разыменован. Если правильно помню его можно только сравнивать. Приведите к соответствующему типу.
02.05.2011 в 20:47

я делала по примеру -
void __cdecl threadfunc( void *args ) {
int *n = (int *) args;
cout << "Received %d\n" << *n << endl;
}

здесь так, только с массивами не идет
02.05.2011 в 20:55

Гудийр
допустим func(void* array[2]){// }
если исходить из вышеуказанного примера
02.05.2011 в 21:03

тут функция _beginthreadfunc она принимает как параметр только void*, не void*[]
02.05.2011 в 21:10

Гудийр
тогда я вас не понял. 1) откуда взялась _beginthreadfunc? (рискну предположить что вы опечатались и ссылаетесь на приведенный пример.
2) поясните свою задачу еще раз

в предыдущем комментарии я предложил сделать аналогично примеру только явно указать размерность массива
02.05.2011 в 21:15

_beginthreadfunc(func, 0, args)
она принимает 1ым парамтером мою func, а 3им параметр моей функции(void*)
03.05.2011 в 02:14

Per anus ad astra!
Так красивше будет:

typedef void (*PF)();
PF array[] = {&a, &b};

array[0](); // вызываешь а

///////////

MyFunc(array[1]);

void MyFunc(PF x)
{
x(); // вызываешь b
}
03.05.2011 в 09:13

Life is a life... We are the humans...
компилятора нет под рукой, но array->a, array->b не работает?