我有多个班级。我想将它们全部存储在地图数组中。
std::map<std::string, ClassMaker*> lookupTable;
我认为如果我做类似
的事情,那将是非常低效的void addClass(std::string className, ClassMaker* const classMaker);
addClass("Class1", new Class1());
addClass("Class2", new Class2());
等等。
我很好奇是否有某种方式我可以用预处理器来做这件事,
#DEFINE_CLASS(Class)
DEFINE_CLASS(Class1)
它会将类存储在地图中,以便我以后可以访问它。
答案 0 :(得分:2)
是的,你可以这样做:
#define DEFINE_CLASS(className) addClass(#className, new className())
DEFINE_CLASS(Class1);
DEFINE_CLASS(Class2);
// ...