重铸* void函数参数

时间:2011-12-08 18:41:02

标签: void-pointers

我之前发布了一个问题here,如果有人可以帮我解决以下问题,我想我可以回答:

我有一个功能

double func(void* data)

我想传入一个对象或结构。 (在我的例子中是犰狳矩阵,甚至只是和std :: vector)。

如何将指向对象的指针作为func()的参数传递,然后,一旦进入func(),如何将void指针重新转换为原始类型?

编辑:这是最终工作的内容,其中mat是Armadillo矩阵类:

mat A(2,2);
A << 1 << 2 << endr << 3 << 4; // A=[1,2; 3,4]
func(&A);

和func:

double func(void* data) {
   mat* pB = (mat*)(data);
   mat B = pB[0];
}

矩阵B和A现在包含相同的数据。

1 个答案:

答案 0 :(得分:0)

如果我理解你,你需要这样的东西。

double func(void* data_v) {
  struct my_type * data = data_v;
}

func((void*)my_data);