說我有無效指針指向的陣列,以不同類型的對象,我想通過一個函數來傳遞他們,將它們轉換成相應的類型的指針數組,我怎麼會去這樣做?我試過這個當前的代碼,但我得到的錯誤:取消引用空指針
‘void*’ is not a pointer-to-object type
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]);
}
任何人都知道實現這個正確的方法是什麼?
編輯:對於情況下,我使用的OpenCV,並試圖創建一個跟蹤條簡單的GUI界面。 Opencv允許userdata被輸入到TrackbarCallback中,當滑塊被移動時被調用,但只能以void指針的形式被調用。
int createTrackbar(const string& trackbarname, const string& winname,
int* value, int count,
TrackbarCallback onChange=0,
void* userdata=0);
我的問題是;爲什麼在這個世界上你使用'void *'呢?這是C++,你有模板。 – 2012-03-13 18:52:55