私は 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 では、このメソッドで AClass をテストする Objective-C テスト ケースも作成しました。
- (void) testStart
{
tested->start();
tested->stop();
}
問題は、私が EXC_BAD_ACCESS を取得することです
pimpl->m_thread.join();
stop メソッドの行。
これは私のヘッダーファイルです:
class AClass {
public:
AClass ();
~AClass();
void start();
void stop();
private:
struct AClassImpl; //fwd declaration of internal struct
AClassImpl * pimpl; //opaque pointer
void process();
};
ここで私が間違っていることについて誰かが私にヒントを与えることができますか?
ありがとう!