所以我正在编写一个工厂系统来创建对象并使用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;
}
register函数调用从虚拟create派生的继承模板create class,以创建从基础对象派生的特定类型的对象。
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创建派生类型?我试过这个,我得到一个关于创建一个抽象对象的错误。如果我必须公开低音类或者是否有其他更适合处理此任务的脚本语言,有没有办法解决这个问题?