私はこれを解決するために1時間ほど修正/解決策を見つけようとしています。基本的に私は持っています:
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ファイルがあります。