【问题标题】:How to make plugable factory work with lua?如何使可插拔工厂与 lua 一起工作?
【发布时间】:2010-12-31 20:26:59
【问题描述】:

类数据是这样的:

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

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

班教授:

类 Base_Professor
{
民众:
    无效进程(Base_data &data)
    {
        std::map::const_iterator it = ListProfessor.find(data.protocolname);
        if(it == ListProfessor.end())
            cout second->Do(数据);
    }

    虚空 Do(Base_data &data){}

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

    ~Base_Professor(){
        std::map::const_iterator 它;
        for(it = ListProfessor.begin(); 它 != ListProfessor.end(); ++it)
            删除它->第二个;
    }
    bool Register(Base_Professor *Professor){
        std::map::const_iterator it = ListProfessor.find(Professor->GetProfessorname());
        如果(它!= ListProfessor.end())
            返回假;
        ListProfessor.insert(std::make_pair(Professor->GetProfessorname(), Professor));
    }
私人的:
    std::map 列表教授;
};

HttpProfessor 类:公共 Base_Professor
{
民众:
    std::string GetProfessorname(){
        返回“http”;
    }
    无效做(Base_data &data){
        std::cout

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

【问题讨论】:

    标签: c++ lua


    【解决方案1】:

    Lua 不提供开箱即用的“类”。它还有其他功能,有些不同。

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

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

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

    这个库提供了您需要的大部分功能,除了“公共”和“私有”功能(一切都是“公共”)。您可以在 lua users wiki 上找到其他库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-16
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多