尝试初始化MFC CCcriticalSection时出现错误C2248

Getting error C2248 while trying to initialize MFC CCriticalSection

本文关键字:错误 C2248 CCcriticalSection 初始化 MFC      更新时间:2023-10-16

我已经尝试修复/找到解决方案一个小时左右了。基本上我有:

CCriticalSection pCS;

在类声明中,然后我使用这样的CSingleLock:

CSingleLock pSL(&pCS);
pSL.Lock();
*Stuff happening here*
pSL.Unlock();

锁定和解锁pCS。但初始化CriticalSection似乎总是以以下方式结束:

c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafxmt.h(82): error C2248: 'CObject::operator =' : cannot access private member declared in class 'CObject'
c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafx.h(535) : see declaration of 'CObject::operator ='
c:program files (x86)microsoft visual studio 10.0vcatlmfcincludeafx.h(509) : see declaration of 'CObject'
This diagnostic occurred in the compiler generated function 'CSyncObject &CSyncObject::operator =(const CSyncObject &)'

我在程序中有4个工作线程,我将向它们发送指向CCcriticalSection所在类的指针,这些线程正在处理CCCriticalSection和主线程。线程使用类的指针来使用使用CCcriticalSection的CSingleLock。

供您参考,该代码还包括Direct2D,但这不应该是相关的。

如有帮助,不胜感激。

编辑:

刚刚尝试用制作一个新项目

#include <afxmt.h>

它给了我例外。这正常吗?我使用的是VC++2010 Professional。

已解决:

那里也有一个CE通风口,所以我想我也会把它变成一个指针,你知道吗。它解决了这个问题。现在有一个afxmt.h文件给了我例外。

如果您希望多个线程在一个CRITICAL_SECTION上同步,您可以共享指向同一关键节的指针,但实际上无法复制CRITICAL_SECTION。

那里也有一个CEvent,所以我想我也会把它变成一个指针,你知道吗。它解决了这个问题。现在有一个afxmt.h文件给了我例外。