Smart Pointer et le Multithreading
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:
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:
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.