我有一个回调函数,需要一个void *
作为传递参数的参数,我想将向量传递给函数。该函数将被多次调用,因此在回调过程完成后,我希望能够迭代所有已调用的元素push_back()
通过回调。
static void cb(void *data)
{
vector<int> *p = static_cast<vector<int>*>(data); //Attempting to convert *void to vector<int>
p->push_back(1);
}
int main()
{
vector<int> a(10); //Max of 10 push_back()s? vector<int> a; gives memory error.
cb((void*)&a.at(0));
cout << a.at(0); //Gives a random number of 6 digits or higher
}
问题在于,当它的值不正确时,它的值为“1”a.at(0)
在回调后调用,只是一些随机数。
假设您无法更改cb()
, 尝试这个:
cb(static_cast<void*>(&a));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)