ОК, поэтому у меня есть класс C ++, который предоставляется Lua с помощью SWIG. Сценарий создает объект, но класс менеджера также имеет указатель на объект, поэтому его можно изменить в C ++ (или другом сценарии) по любой причине.
Проблема в том, что когда скрипт завершает работу, объект освобождается, как я могу контролировать то, что собирает сборщик мусора, без необходимости реализации метаметода gc?
Вот пример:
--Script that creates the object
someObject = Utils.Object("Obj name");
Теперь объект зарегистрировался у менеджера, поэтому остальные приложения (и другие скрипты) могут получить к нему доступ.
--Another script
obj = ObjManager:GetObject(0);
Ясно, что это не очень реалистичный пример, но, надеюсь, он иллюстрирует мой вопрос. Есть ли способ наложить вето на сборщик мусора без метаметода gc в C ++?
Просто чтобы уточнить, что менеджер находится в C ++, а Utils - это имя модуля, в котором находится открытый класс. Также объект регистрируется менеджером в своем конструкторе.
Заранее спасибо.