Bonjour,

j'ai fait une petite classe CSharedMemory dont voici le .h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
class CSharedMemory
{
 
private :
	CString m_strName;
	DWORD m_size;
	HANDLE m_hMapFile;
	LPVOID m_pMappedView;
	CMutex m_mtx;
 
public :
	CSharedMemory(DWORD size, LPCSTR szName);
	~CSharedMemory();
	int Create();
	int Open();
	int Map();
	int Write(CONST VOID* Source);
	int Read(VOID* Destination);
};
J'ai un petit soucis :
le constructeur de l'objet CMutex m_mtx est défini comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
CMutex( BOOL bInitiallyOwn = FALSE, LPCTSTR lpszName = NULL, LPSECURITY_ATTRIBUTES lpsaAttribute = NULL );
Donc quelle est la solution générique pour instancier un tel objet dans le constructeur de ma classe ?
Moi j'ai fait comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
CSharedMemory::CSharedMemory(DWORD size, LPCSTR szName) :
	m_size(size),
	m_strName(szName),
	m_mtx(FALSE, m_strName+"_MTX"),
	m_hMapFile(NULL),
	m_pMappedView(NULL)
{
 
}
Mais c'est parce que j'ai pas trouvé d'autres façons de faire. J'aurais préféré l'appeler autrement, explicitement comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
CString tmp = m_strName;
tmp += "_MTX";
CMutex m_mtx(FALSE, tmp);
Donc de façon générale, y a t-il une autre façon d'appeler un constructeur d'un objet que celle que j'ai trouvé ?

Merci par avance.
@+