将参数作为无效指针传递给函数

时间:2019-04-15 09:40:48

标签: c++ arguments void-pointers

我有一个函数数组,稍后将作为回调:

std::vector<std::function<void(void*)>> callbacks;

我确实需要向此向量插入其他类型的函数,这就是为什么我选择void *作为参数。

在这些功能之一中,我需要一个整数,所以我做到了:

void MyObject::MyTestCb(void* params) {
  int i = *(int*)params;
  ...
}

...

callbacks.push_back(std::bind(&MyObject::MyTestCb, this, std::placeholders::_1));

当我调用这些回调时,首先我尝试这样:

int index = 73;
void* params = (void*)&index;
callbacks[x](params);

但是有时我没有在回调函数中收到该值!大多数时候都获得零。可能与安装在64位计算机上有关吗?

无论如何,我然后尝试了这种方式:

void* params = new int(73);
callbacks[x](params);
delete params;

经过一些测试,我根本没有发现任何问题。但是,这最后的方法是正确的方法吗?它应该支持任何类型的参数吗?

0 个答案:

没有答案