boost :: threadのドキュメントから、次のようにすることでパラメータをスレッド関数に渡すことができるようです。
boost::thread* myThread = new boost::thread(callbackFunc, param);
しかし、私がこれを行うと、コンパイラは次のように文句を言います
オーバーロードされた関数は2つの引数を取りません
私のコード:
#include <boost/thread/thread.hpp>
void Game::playSound(sf::Sound* s) {
boost::thread soundThread(playSoundTask, s);
soundThread.join();
}
void Game::playSoundTask(sf::Sound* s) {
// do things
}
私はOgre3dに付属しているブーストのコピーを使用していますが、これは非常に古い可能性があると思います。ただし、興味深いことに、thread.hppを調べたところ、2つ以上のパラメーターを持つコンストラクターのテンプレートがあります。