gpt4 book ai didi

c++ - 带有许多用于测试的元素的长 std::initializer_list

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:22 26 4
gpt4 key购买 nike

我的类需要对其其中一个数据成员(恰好是容器)的元素数量施加上限。

我的类的一个构造函数将 std::initializer_list 作为参数来初始化该容器数据成员。

单元测试需要验证上限是否到位。为此,我需要尝试使用包含 1025 个元素的初始化列表来调用我的构造函数。

有没有比在测试代码中使用包含 1025 个元素的大括号文字列表更好(= 更具可读性)的方法来创建这个包含 1025 个元素的 initializer_list?

(元素的数据类型总是unsigned short (uint16_t),我的类不是模板。)

最佳答案

如果您使用模板递归或奇特的“重复”宏,您可能会受到静态递归限制的影响,这将使您的实现比平时更加​​复杂。

考虑到这一点,我认为最简单和最好的方法就是定义一些嵌套的宏,即

#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 };

关于c++ - 带有许多用于测试的元素的长 std::initializer_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43491221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com