簡體   English   中英

嘗試初始化MFC CCriticalSection時獲取錯誤C2248

[英]Getting error C2248 while trying to initialize MFC CCriticalSection

我一直在試圖解決/找到一個小時的解決方案。 基本上我有:

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文件給了我例外。

如果您希望多個線程在CRITICAL_SECTION上同步,則可以共享指向同一關鍵節的指針,但實際上不能復制CRITICAL_SECTION。

那里也有一個CEvent,所以我想我也應該把它變成一個指針,你知道嗎。 它解決了這個問題。 現在有一個afxmt.h文件給了我例外。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM