我有一个回调函数,它接受一个 void *
作为传递参数的参数,我想将一个 vector 传递给该函数。该函数将被多次调用,因此在回调过程完成后,我希望能够遍历所有通过回调被 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”,只是一些随机数。
最佳答案
假设你不能改变cb()
的签名,试试这个:
cb(static_cast<void*>(&a));
关于c++ - 将 vector 作为空指针传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14825274/