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