类数据是这样的:
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/