我在我的代码中实现了观察者(或“监听器”)模式,如下所示:
struct EntityListener
{
public:
virtual void entityModified(Entity& e) = 0;
};
class Entity
{
public:
Entity();
void setListener(EntityListener* listener);
private:
EntityListener* m_listener;
};
现在,这在C++中可以实现;Entity类在需要时调用entityModified()方法。现在,我想将部分功能转移到Lua中,其中包括此侦听器回调。现在从Lua脚本创建实体。问题是,如何在Lua中实现侦听器功能?
例如,Lua脚本当前执行以下操作:
function initializeEntity()
-- The entity object is actually created in C++ by the helper
Entity = Helper.createEntity()
-- Here I'd like to hook a Lua function as the Entity's listener
end