【问题标题】:'CObject::CObject' : cannot access private member declared in class 'CObject''CObject::CObject' : 无法访问在类'CObject' 中声明的私有成员
【发布时间】:2013-04-24 02:09:42
【问题描述】:

我的问题是:

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 线程?

【问题讨论】:

  • 您是否尝试过将列表框传递为例如boost::ref(lstBox)?
  • 那是帮助我。非常感谢)

标签: c++ mfc boost-thread


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 2015-05-05
    • 2015-09-05
    • 1970-01-01
    • 2013-07-28
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    相关资源
    最近更新 更多