3 votes

boost::weak_ptr interaction avec le suppresseur personnalisé

J'ai un boost::shared_ptr avec un effaceur personnalisé attaché. En convertissant ceci en weak_ptr l'information sur le suppresseur est-elle perdue ? Dans l'affirmative, comment puis-je réattacher le même suppresseur à la base de données ? shared_ptr -s acquis auprès de weak_ptr::lock() méthode ?

La fonctionnalité que j'implémente est un conteneur de weak_ptr -s pointant vers les instances vivantes d'un certain type. J'ai besoin que le suppresseur personnalisé supprime l'entrée du conteneur pour les objets en cours de suppression.

3voto

ereOn Points 18624

Non, le suppresseur personnalisé n'est jamais perdu.

Quand vous lock() su weak_ptr vous retrouvez un shared_ptr avec le même suppresseur personnalisé (et d'autres attributs) que celui que vous utilisez pour créer l'objet weak_ptr en premier lieu.

Toutefois, si aucun shared_ptr fait référence à votre weak_ptr plus, le lock() échouera et retournera une valeur nulle shared_ptr .

C'est-à-dire que vous ne devriez pas avoir à vous soucier du suppresseur personnalisé. Si vous l'avez spécifié sur la page shared_ptr il sera appelé lorsque la dernière opération liée shared_ptr seront libérés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X