我一直在試圖修復/找到一個小時左右的解決方案。 基本上我有:嘗試初始化MFC時出錯C2248 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文件給我例外。
錯誤表明您正在嘗試創建一個'CCriticalSection'副本,但該類型不可複製。您需要展示更多代碼,即試圖執行所述副本的代碼。 – ildjarn
任何可能存在*這個關鍵部分(代碼中的pCS)以任何方式被複制的對象?看起來好像是引用了CCriticalSection的複製構造函數。如果你沒有明確地複製暴擊,你是否明確或隱含地複製持有它的對象?隱藏你的類的複製構造函數(使其成爲私有的),如果它破壞了編譯的某個地方,那麼你就是失敗點)。 – WhozCraig
我只聲明變量,然後使用CSingleLocks使用CCriticalSection。代碼中的CriticalSection被複制的地方沒有意義。我將CCriticalSection pCS更改爲CCriticalSection * pCS,但它仍然不起作用。 – Nooobody