【发布时间】:2013-02-21 23:27:10
【问题描述】:
从 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 附带的 boost 副本,我想它可能已经很老了。不过,有趣的是,我查看了 thread.hpp,它确实包含带有 2 个或更多参数的构造函数的模板。
【问题讨论】:
-
您的第一个问题是尝试使用
thread*初始化thread对象,但您的错误无关紧要——听起来您要么缺少#include <boost/thread.hpp>,要么真的使用了 旧版 Boost... -
你能发一个sscce吗?
-
@ildjarn,我真傻。我在描述我的代码时犯了一个错字。我将用我的实际代码和更多信息更新问题
-
Game是类还是命名空间? -
@RazorStorm 好的,这就解释了。我编辑了我的答案。
标签: c++ visual-c++ boost