【发布时间】:2012-03-13 18:50:58
【问题描述】:
假设我有一个指向不同类型对象的 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 并尝试使用轨迹栏创建一个简单的 gui 界面。 Opencv 允许将用户数据输入到 TrackbarCallback 中,该方法在滑块移动时被调用,但只能以 void 指针的形式。
int createTrackbar( const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange=0,
void* userdata=0);
【问题讨论】:
-
我的问题是;你到底为什么要使用
void*?这是 C++,你有模板。