'CObject :: CObject':无法访问类'CObject'中声明的私有成员

时间:2013-04-30 08:06:49

标签: c++ mfc boost-thread

我的问题是:

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);

lstBox是MFC ListBox。,我的TimerFunction是:

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

我需要做什么,编辑我的MFC表单,或者在线程中编辑我的表单中的ListBox?

1 个答案:

答案 0 :(得分:1)

复制提供给boost::thread构造函数的参数。从链接的参考页面:

  

好像是线程(boost :: bind(f,a1,a2,...))。 因此,f和每个a都被复制到内部存储中以供新线程访问。

编译器抱怨尝试复制不可复制的对象。正如Joachim Pileborg对问题的评论中所建议的,使用boost::ref来阻止复制并传递对参数的引用。通过引用传递的参数必须存在于线程的生命周期中。