【发布时间】:2013-01-27 07:55:05
【问题描述】:
我有一个回调函数,它将void * 作为参数传递给它,我想将一个向量传递给函数。该函数将被多次调用,因此在回调过程完成后,我希望能够通过回调遍历所有已push_back()'ed 的元素。
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 *在 C++ 中通常是一种较小的技术。 -
@chris 我知道 :( 我正在尝试使用用 C 编写的 lib-Sqlite3。