类数据是这样的:
struct Base_data
{
public:
Base_data(){
protocolname = "Base";
}
string protocolname;
};
class HttpData : public Base_data
{
public:
HttpData(){
protocolname = "Http";
}
};
班级教授:
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
我可以通过继承者Base_Professor添加新协议并注册新类但我在lua中没有理想的方法。你有什么理想的方法吗?
答案 0 :(得分:1)
Lua不提供开箱即用的“课程”。它有其他功能,有些不同。
但是,您可以通过使用其中一些功能(表格和元表)来模拟类和继承功能。
如果您对了解技术细节不感兴趣,可以使用一些已经构建的lua库。
我自己创建了一个名为“MiddleClass”的库,它提供了这个功能。您可以在LÖVE wiki page中找到手册。
除了“公共”和“私人”功能(一切都是“公共”)之外,该库提供了您需要的大部分内容。您可以在lua users wiki上找到其他库。