类数据是这样的:

struct Base_data
{
public:
    Base_data(){
        protocolname = "Base";
    }
    string protocolname;
};

class HttpData : public Base_data
{
public:
    HttpData(){
        protocolname = "Http";
    }
};


班级教授:

Base_Professor类
{
上市:
    无效过程(基础数据和数据)
    {
        std :: map :: const_iterator it = ListProfessor.find(data.protocolname);
        if(它== ListProfessor.end())
            cout second-> Do(data);
    }

    虚拟虚空Do(Base_data&data){}

    虚拟std :: string GetProfessorname(){
        返回“ Base”;
    }

    〜Base_Professor(){
        std :: map :: const_iterator;
        for(它= ListProfessor.begin();它!= ListProfessor.end(); ++ it)
            删除它-> second;
    }
    bool Register(Base_Professor * Professor){
        std :: map :: const_iterator it = ListProfessor.find(Professor-> GetProfessorname());
        if(它!= ListProfessor.end())
            返回false;
        ListProfessor.insert(std :: make_pair(Professor-> GetProfessorname(),Professor)));
    }
私人的:
    std :: map ListProfessor;
};

HttpProfessor类:public Base_Professor
{
上市:
    std :: string GetProfessorname(){
        返回“ Http”;
    }
    无效做(Base_data&data){
        std :: cout

我可以通过继承的Base_Professor添加新协议并注册新类,但是我不理想如何在lua中做到这一点。您有理想的做法吗?

最佳答案

Lua不提供现成的“类”。它具有其他功能,但有所不同。

但是,您可以使用其中一些功能(表和元表)来模拟类和继承功能。

如果您不希望了解技术细节,可以使用一些已经构建的lua库。

我自己创建了一个名为“ MiddleClass”的库,它提供了此功能。您可以在其LÖVE wiki page中找到手册。

该库提供了您所需的大多数内容,除了“公共”和“私有”功能(一切都是“公共”)。您可以在lua users wiki上找到其他库。

关于c++ - lua如何使可插拔工厂工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1992708/

10-10 04:14