我是 C++ 新手,只是在这段代码中发现我做错了什么:
我的 C++ 类如下所示:
#include <boost/thread/thread.hpp>
using namespace std;
struct AClass::AClassImpl
{
boost::thread m_thread;
};
AClass::AClass(): pimpl (new AClass::AClassImpl) {}
AClass::~AClass() { delete pimpl; }
void AClass::start()
{
cout << PREFIX << "main() : creating thread, " << endl;
pimpl->m_thread = boost::thread(boost::bind(&AClass::process, this));
}
void AClass::stop()
{
pimpl->m_thread.join();
}
void AClass::process()
{
cout << PREFIX << "Hello World! Thread ID, " << endl;
boost::this_thread::sleep(boost::posix_time::milliseconds(1000));
return;
}
在 XCode 中,我还编写了一个 Objective-C 测试用例,用这种方法测试 AClass:
- (void) testStart
{
tested->start();
tested->stop();
}
问题是我在
pimpl->m_thread.join();
停止方法中的行。
这是我的头文件:
class AClass {
public:
AClass ();
~AClass();
void start();
void stop();
private:
struct AClassImpl; //fwd declaration of internal struct
AClassImpl * pimpl; //opaque pointer
void process();
};
谁能给我一个提示我在这里做错了什么?
谢谢!