Скажем, у меня есть массив указателей void, указывающих на объекты разных типов, и я хочу передать их через функцию и привести их к указателям их соответствующего типа, как мне поступить?Я пробовал этот текущий код, но я получаю сообщение об ошибке:
'void *' не является указателем на тип объекта
objectA myObjectA;
objectB myObjectB;
objectC myObjectC;
objectD myObjectD;
void *data[4];
data[0] = static_cast<void *>( &myObjectA );
data[1] = static_cast<void *>( &myObjectB );
data[2] = static_cast<void *>( &myObjectC );
data[3] = static_cast<void *>( &myObjectD );
void dereference( void *data )
{
objectA *objA_ptr = static_cast<objectA *>( data[0] );
objectB *objB_ptr = static_cast<objectB *>( data[1] );
objectC *objC_ptr = static_cast<objectC *>( data[2] );
objectD *objD_ptr = static_cast<objectD *>( data[3] );
}
Кто-нибудь знаетправильный способ реализовать это?
edit: Для контекста я использую opencv и пытаюсь создать простой графический интерфейс с трекбаром.Opencv позволяет передавать пользовательские данные в TrackbarCallback, который вызывается при перемещении ползунка, но только в виде пустого указателя.
int createTrackbar( const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange=0,
void* userdata=0);