Plusieurs de mes objets C++ implémentent le comptage de la réfrérence via les méthodes AddRef et FreeRef. Si FreeRef réduit le nombre de réfrences à 0, l'objet se supprime.Classes C++ de swig et de réfrence
Toutes les méthodes qui retournent un objet compté par réfrence n'incrémentent pas la réfrence. Ceci le rend simple car un pointeur intelligent peut alors simplement incrémenter le compte apon recevant un pointeur et décrémenter le compte quand ils ne le réfrènent plus. par exemple:
template<class T> FlPtr
{
T *p;
public:
FlPtr(T *p=0):p(p){if(p)p->AddRef();}
~FlPtr(){if(p)p->FreeRef();}
FlPtr<T>& operator =(T *newP)
{
if(newP)newP->AddRef();
if(p)p->FreeRef();
p = newP;
return *this;
}
operator T*(){return p;}
};
Je pensais mayby si je pouvais dire SWIG juste utiliser mon pointeur intelligent existant en interne pour ces objets qui peuvent travailler mais je ne suis pas sûr de savoir comment faire que ce soit :(