为此,我一直在尝试修复/寻找解决方案一个小时左右。基本上我有:
CCriticalSection pCS;
在类声明中,然后我使用这样的 CSingleLock:
CSingleLock pSL(&pCS);
pSL.Lock();
*Stuff happening here*
pSL.Unlock();
锁定和解锁 PCS。但是初始化 CriticalSection 似乎总是以这种方式结束:
c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxmt.h(82): error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'
c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(535) : see declaration of 'CObject::operator ='
c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h(509) : see declaration of 'CObject'
This diagnostic occurred in the compiler generated function 'CSyncObject &CSyncObject::operator =(const CSyncObject &)'
我在程序中有 4 个工作线程,我正在向它们发送指向 CCriticalSection 所在类的指针,并且线程正在 CCriticalSection 以及主线程上工作。线程使用类的指针来使用使用 CCriticalSection 的 CSingleLock。
供您参考,该代码还包括 Direct2D,但这不应该是相关的。
一些帮助将不胜感激。
编辑:
刚刚尝试使用以下内容创建一个新项目:
#include <afxmt.h>
在里面。它给了我例外。这正常吗?我正在使用 VC++ 2010 Professional。
解决了:
那里也有一个 CEvent,所以我想我也会把它变成一个指针,你知道的。它解决了这个问题。现在有一个 afxmt.h 文件给了我例外。