Un cast de SmartPointer qui pose probl�me
Bonjour,
Je suis en train de d�velopper une fonction sur une classe SmartPointer que j'ai d�ja d�velopper.
Cette fonction � pour but de retouner un smartPointer d'un autre Type mais partageant le meme pointeur que le premier. Je m'en sert pour le polymorphisme.
Ma fonction marche tr�s bien sauf que si je concerve certaines donn�es en private ca compile pas avec cet erreur :
Code:
1 2 3 4 5
|
../library/libutils/smartpointer.h:254: error: 'SDLWidget* SmartPointer<SDLWidget>::ref' is private
../library/libutils/smartpointer.h:139: error: within this context
../library/libutils/smartpointer.h:255: error: 'unsigned int* SmartPointer<SDLWidget>::refCount' is private
../library/libutils/smartpointer.h:140: error: within this context |
voici ma fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
template <class X>
SmartPointer<X> Cast(SmartPointer<T> &_smartPointer, X* _dummy)
{
SmartPointer<X> newSmartPointer;
mModRef.Lock();
newSmartPointer.ref = (X*)_smartPointer.ref;
newSmartPointer.refCount = _smartPointer.refCount;
*refCount++;
mModRef.Unlock();
return newSmartPointer;
} |
Aparemment le probleme c'est que dans ce cas les variables ref et refCount deviennent priv�e pour la meme classe � cause du template.
J'ai essayer de r�soudre mon probleme en ajoutant un :
friend class Smartpinter; (ce qui est bizard dans la classe smarpointer dailleur) mais ca marche pas...
En attendant je met tout en public mais j'aurais aim� trouver une solution plus propre � ce probleme...
Quelqu'un � une id�e ???
Merci