我正在使用这篇文章中的宏循环我的参数。一切都很好!但是,有没有办法将这两者结合CCB_CREATE
起来CCB_CREATE_MORE
?
我需要提取第一个参数object_type
来编写额外的代码。额外object_type
的 s 将使用FOR_EACH
循环插入到地图中。
当我在使用CCB_CREATE_MORE(Type1)
. 为了解决这个问题,我制作了另一个宏来处理它CCB_CREATE(Type1)
。希望找到一个聪明的解决方案,将这两者结合成一个优雅的宏。有任何想法吗?
#define INSERT_LOADER_MAP(object_type) loader_map.insert(make_pair(#object_type, object_type##Loader::loader()))
#define CCB_CREATE_MORE(object_type,...) \
static CCNode * create##object_type##Node() { \
std::map<std::string, CCNodeLoader*> loader_map; \
std::string classname = #object_type; \
FOR_EACH(INSERT_LOADER_MAP,object_type,__VA_ARGS__); \
return loadCCBFile((classname + ".ccbi").c_str(), loader_map); \
}
#define CCB_CREATE(object_type) \
static CCNode * create##object_type##Node() { \
std::map<std::string, CCNodeLoader*> loader_map; \
std::string classname = #object_type; \
INSERT_LOADER_MAP(object_type); \
return loadCCBFile((classname + ".ccbi").c_str(), loader_map); \
}