引数を渡すためのパラメーターとしてを受け取るコールバック関数があり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)
ではなく、乱数だけであるということです。