1

所以我正在编写一个工厂系统来创建对象并使用 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;
     }

注册函数调用从虚拟创建派生的继承模板创建类,以创建从基对象派生的特定类型的对象。

    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 创建它们的派生类型?我已经尝试过了,但在创建抽象对象时出现错误。如果我必须公开低音类,或者是否有另一种更适合处理此任务的脚本语言,有没有办法解决这个问题?

4

0 回答 0