关于c ++:如何使用lua使可插拔工厂工作?

How to make plugable factory work with lua?

类数据如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct Base_data
{
public:
    Base_data(){
        protocolname ="Base";
    }
    string protocolname;
};

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

班主任:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Base_Professor
{
public:
    void Process(Base_data &data)
    {
        std::map::const_iterator it = ListProfessor.find(data.protocolname);
        if(it == ListProfessor.end())
            cout second->Do(data);
    }

    virtual void Do(Base_data &data){}

    virtual std::string GetProfessorname(){
        return"Base";
    }

    ~Base_Professor(){
        std::map::const_iterator it;
        for(it = ListProfessor.begin(); it != ListProfessor.end(); ++it)
            delete it->second;
    }
    bool Register(Base_Professor *Professor){
        std::map::const_iterator it = ListProfessor.find(Professor->GetProfessorname());
        if(it != ListProfessor.end())
            return false;
        ListProfessor.insert(std::make_pair(Professor->GetProfessorname(), Professor));
    }
private:
    std::map ListProfessor;
};

class HttpProfessor : public Base_Professor
{
public:
    std::string GetProfessorname(){
        return"Http";
    }
    void Do(Base_data &data){
        std::cout

我可以通过继承基_教授添加新的协议并注册新的类,但在Lua中我没有理想的方法。你有什么理想的方法吗?


Lua不提供开箱即用的"类"。它还有其他的特点,有些不同。

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

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

我自己创建了一个名为"中间类"的库,它提供了这个功能。你能在它的L中找到一本手册吗?VI Wiki页面。

除了"公共"和"私有"功能(所有功能都是"公共的"),这个库提供了您所需要的大部分功能。您可以在Lua用户wiki上找到其他库。