我如何从C ++中的预处理器调用函数?

时间:2016-08-21 06:11:37

标签: c++ c-preprocessor

我有多个班级。我想将它们全部存储在地图数组中。

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)

它会将类存储在地图中,以便我以后可以访问它。

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做:

#define DEFINE_CLASS(className) addClass(#className, new className())

DEFINE_CLASS(Class1);
DEFINE_CLASS(Class2);
// ...