Bonjour a tous. Voilà cela fait quelque temps que je bloque au niveau de la conception d'une classe: une classe de SmartPtr mais qui soit thread safe. Ce qui suit est une ebauche de la declaration de cette classe:


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
21
22
23
template<typename Ty,bool IsMultiThread = false>
class SmartPtr;
 
 
template<typename Ty> 
class SmartPtr<Ty,true>
{
	public:
		template<typename Ty> class Proxy;
 
		SmartPtr();
		explicit SmartPtr(Ty* Elt);
		.../...
 
		SmartPtr::Proxy<Ty>* operator -> ();
		const SmartPtr::Proxy<Ty>* operator -> () const;
 
		//??? operator *();	     <--- le probleme est ici.
 
 
		../...
 
};
je veux eviter les instructions du genre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
struct A
{
	int val;
	A(int i);
};
 
SmartPtr<A> sp(new A(10) );
int* pi = &(*sp).val;
Toute proposition es la bienvenue.
Merci pour votre aide.