Выставление правильных фабричных классов Луе

Поэтому я пишу фабричную систему для создания объектов и использую 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? Я пробовал это, и я получаю ошибку о создании абстрактного объекта. Есть ли способ обойти это, если мне придется выставлять классы баса или есть другой язык сценариев, более подходящий для решения этой задачи?

0 ответов

Другие вопросы по тегам