我的类需要对其中一个数据成员的元素数量施加上限,这恰好是一个容器。
我的类的一个构造函数将std :: initializer_list作为参数来初始化该容器数据成员。
单元测试需要验证上限是否到位。为此,我需要尝试使用包含1025个元素的初始化列表调用我的构造函数。
是否有更好(=更易读)的方法来创建这个1025元素的initializer_list,而不是在测试代码中有一个1025元素的支撑文字列表?
(元素的数据类型总是无符号短(uint16_t),我的类不是模板。)
答案 0 :(得分:3)
如果你去模板递归,或者花哨"重复"宏,您可能会受到静态递归限制的影响,这将比平常更加复杂您的实现。
考虑到这一点,我认为最简单和最好的方法就是定义一些嵌套宏,即
#define ZEROS_10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
#define ZEROS_50 ZEROS_10, ZEROS_10, ZEROS_10, ZEROS_10, ZEROS_10
#define ZEROS_250 ZEROS_50, ZEROS_50, ZEROS_50, ZEROS_50, ZEROS_50
#define ZEROS_1K ZEROS_250, ZEROS_250, ZEROS_250, ZEROS_250
FooType f{ ZEROS_1K, ZEROS_10, ZEROS_10, 0, 0, 0, 0, 0 };