我们为变量编号,例如:
float my_float_0;
float my_float_1;
float my_float_2;
是否有任何形式的模板/宏魔术可以让我们通过for循环中的索引访问这些变量?
最佳答案
如果您无法控制变量,则唯一的选择就是进行一些良好的宏元编程。 Boost.Preprocessor's documentation是一个很好的起点-您可以遍历一个数字范围,并将它们与my_float_
令牌连接起来以产生您的变量名。
示例(未试用):
#define SEQ (0)(1)(2)
#define MACRO(r, data, elem) BOOST_PP_CAT(elem, data)
BOOST_PP_SEQ_FOR_EACH(MACRO, my_float_, SEQ)
// expands to my_float_0 my_float_1 my_float_2
通过更改
MACRO
的扩展范围,可以为每个变量生成代码。