OK, donc j'ai une classe C++ qui est exposée à Lua en utilisant SWIG. Le script crée l'objet mais une classe de gestionnaire a également un pointeur vers l'objet afin qu'il puisse être modifié en C++ (ou un autre script) pour une raison quelconque. Le problème est que lorsque le script se termine l'objet est libéré, comment puis-je contrôler ce que le Garbage collector recueille sans avoir à implémenter une métaméthode gc?Contrôle du garbage collector de Lua5.1
Voici un exemple:
--Script that creates the object
someObject = Utils.Object("Obj name");
maintenant l'objet lui-même est enregistré avec le gestionnaire de sorte que le reste de l'application (et d'autres scripts) peuvent y accéder. Clairement pas un exemple très réaliste mais j'espère que cela illustre ma question. Y a-t-il un moyen d'opposer son veto au garbage collector sans une métaméthode gc en C++? Pour clarifier le gestionnaire est en C++, et Utils est le nom du module qui héberge la classe exposée. De plus, l'objet s'enregistre lui-même auprès du gestionnaire dans son constructeur.
Merci d'avance.
Il serait utile si vous étiquetez chaque fragment de code pour savoir si le fragment de code est C++ ou Lua. –
A droite je les ai étiquetés avec des commentaires lua. –