我有一个回调函数,它需要一个 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
}
问题在于当回调函数执行后,
a.at(0)
并没有正确地赋值为 "1",而是随机数。
void *
通常是一种较次的技术。 - chris