Выставление правильных фабричных классов Луе
Поэтому я пишу фабричную систему для создания объектов и использую lua для их вызова. однако я изо всех сил пытаюсь выяснить, как выставить их Луа, используя luaBridge.
У меня есть шаблон фабрики:
template <class T, class Id>
{
T* create(Id name)
{
}
void register(Id name, BaseCreator<T>* func)
}
}
std::map<Id, Creator<T>*> FunctionMap;
}
Функция register вызывает унаследованный класс create template, производный от виртуального 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? Я пробовал это, и я получаю ошибку о создании абстрактного объекта. Есть ли способ обойти это, если мне придется выставлять классы баса или есть другой язык сценариев, более подходящий для решения этой задачи?