J'ai une classe de modèle de gestionnaire de pool. Quand un objet de classe est ajouté au gestionnaire de pool je voudrais le remettre à son état initial. Je voudrais appeler le destructeur de placage et le constructeur de placage afin qu'il soit complètement réinitialisé pour la prochaine fois qu'il est distribué par le gestionnaire de la piscine. J'ai essayé plusieurs façons de faire fonctionner ça, mais je suis perplexe. Voici un exemple de ce que j'ai essayé. J'ai essayé plusieurs syntaxes différentes et aucune ne semble fonctionner. Le code lui-même est multiplateforme devrait donc compiler avec gcc (sous MinGW ou linux ou mac) et pour Windows je l'utilise encore vs 2003.Comment réinitialiser une classe à l'aide de la suppression/remplacement d'un modèle à partir d'un modèle?
Répondre
Que diriez-vous:
template <class T>
void PoolClass<T>::ReleaseToPool(T *obj)
{
obj->~T(); //call destructor
obj = new ((void *)obj)T(); //call constructor
// add a pointer to the object to the list...
}
J'ai essayé ce 'obj = new (location) T();' et obtenir une erreur de compilation, quelque chose sur l'emplacement, peut-être que VS 2003 est bogué et que j'ai une nouvelle version de VS? – KPexEA
Appeler delete va libérer sa mémoire, si vous êtes chanceux, vous obtiendrez une violation d'accès. – Ismael
ouais ce que tu veux c'est juste faire obj-> ~ T(); au lieu de supprimer –
Boost a une bibliothèque Pool. Il pourrait être plus facile de simplement utiliser le leur au lieu d'écrire le vôtre.
- 1. Comment accéder à ActiveRecord :: AutosaveAssociation.marked_for_destruction? à partir de modèle parent
- 2. Comment faire automatiquement pour "réinitialiser les styles rapides à partir du modèle XYZ" dans Word 2007?
- 3. Modèle de classe à utiliser dans DataMapper
- 4. spécialisation de modèle de classe modèle
- 5. Passer un modèle de vue à la classe d'assistance
- 6. Importer une classe de modèle explicitement instanciée à partir de dll
- 7. Modèle de conception adapté à la tâche
- 8. (Obj) C++: Instancier (référence à) classe à partir du modèle, accéder à ses membres?
- 9. générer viewmodel à partir du modèle?
- 10. Créer une présentation PowerPoint 2007 à partir d'un modèle
- 11. Comment dériver une classe à partir de CFindReplaceDialog? (MFC)
- 12. Comment ajouter une méthode de modèle à une classe existante dans une session interactive (dans iPython)?
- 13. Ajouter une photo au modèle has_many d'un modèle à partir d'une vue
- 14. Paramètre modèle pour une spécialisation de modèle?
- 15. Spécialisation de modèle de fonction à l'intérieur d'une classe modélisée
- 16. Comment créer une traduction à la valeur "timesince"? (Balise modèle)
- 17. en classe modèle
- 18. Modèle de liaison à une liste imbriquée
- 19. Comment déclarer/définir une classe avec des paramètres de modèle de modèle sans l'aide d'un paramètre de modèle supplémentaire
- 20. Comment supprimer des boutons d'un modèle Flash piloté par XML à partir d'un modèle monstre?
- 21. Comment dériver une nouvelle classe à partir de DataTemplate et l'utiliser à la place de DataTemplate?
- 22. Modèle ASP.NET lié à ProfileCommon
- 23. Pouvez-vous accéder à un modèle classé subbed à l'intérieur du modèle de super-classe dans l'ORM de Django?
- 24. Appel d'une méthode de contrôleur à partir d'une classe de modèle
- 25. Refactoring à partir du modèle de base de données partagée
- 26. Est-il possible d'accéder à des valeurs de paramètres de modèle non-type dans une classe de modèle spécialisé?
- 27. Comment mettre à jour une variable de modèle Eclipse à la volée?
- 28. structure de données laide à la recherche java
- 29. Obtenir des données à partir d'une case à cocher dans une colonne modèle de asp.net gridview
- 30. Modèle de threading à remontage NET
Avez-vous essayé ceci http://stackoverflow.com/questions/362953/what-are-uses-of-the-c-construct-placement-new? ie Casting obj à void * – Ismael
Oui j'ai essayé de le lancer pour annuler et ensuite faire de nouveau (voidobj) T(); À ce moment, je soupçonne que VS2003 est buggé et que j'ai besoin d'être amélioré. – KPexEA