0

私の問題は次のとおりです。

Error 1 error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' c:\program files\microsoft visual studio 10.0\vc\atlmfc\include\afxwin.h 1991 1 ProcessInfo

そして私のコード:

boost::thread timerThread(&CMainFunctions::TimerFunction, this, pid, TIMER_INTERVAL_MS, lstBox);

lstBoxMFC ListBox です。私の TimerFunction は次のとおりです。

void CMainFunctions::TimerFunction(int pid, int interval, CListBox &lstbox)

MFC フォームを編集したり、フォーム内の ListBox をスレッドで編集したりするには、何をする必要がありますか?

4

1 に答える 1

1

コンストラクターに渡された引数boost::threadはコピーされます。リンクされた参照ページから:

まるでスレッド (boost::bind(f,a1,a2,...)) のように。その結果、新しいスレッドがアクセスできるように、f と各 an が内部ストレージにコピーされます。

コンパイラは、コピー不可能なオブジェクトをコピーしようとしていると不平を言っています。Joachim Pileborgによる質問へのコメントで示唆されているboost::refように、コピーを防止し、代わりに引数への参照を渡すために使用します。参照によって渡される引数は、スレッドの存続期間中存在する必要があります。

于 2013-04-30T08:16:08.217 に答える