将正确的工厂类暴露给lua

所以我正在编写一个工厂系统来创建对象,并使用lua来调用它们。然而,我正在努力弄清楚如何使用luaBridge将它们暴露给lua。

我有一个模板工厂:

    template <class T, class Id>
    {
         T* create(Id name)
         {
         }
         void register(Id name, BaseCreator<T>* func)
         }
         }
         std::map<Id, Creator<T>*> FunctionMap;
     }

注册函数调用一个继承自虚拟create的继承模板创建类来创建某个类型的对象,该类型派生自基本对象。

    class BaseObject{virtual void hello() = 0;}
    class DerivedObject : public BaseObject{void hello()}

    template <class T> class BaseCreator { virtual T*create = 0; }

    template <class Base, class derived>
    class DerivedCreator
    {
           Base* create ()
           {
                 return new derived;
            }
     }

在C++中,工厂使用如下:

     Factory<DerivedObject, string> objMap;
     objmap.register("Obj1", new DerivedCreator<DerivedObject, BaseObject>;
     BaseObject * Temp = objMap.create("obj1");

我是否必须将虚基类如BaseObject和BaseCreator暴露给lua,以便我可以使用lua创建它们的派生类型?我尝试过这样做,但我会收到有关创建抽象对象的错误。如果我确实必须暴露基类,是否有一个更适合处理此任务的其他脚本语言?

点赞