数组初始值设定项必须是初始值设定值列表或字符串文字
array initializer must be an initializer list or string literal
我应该使用什么类型来编译构造函数中的s
参数?我尝试了unsigned char s[32]
和unsigned char *s
,但都给出了编译器错误:
数组初始值设定项必须是初始值设定值列表或字符串文字
struct foo
{
size_t a;
size_t b;
unsigned char c[32];
constexpr foo(size_t a_, size_t b_, ??? s) :
a(a_),
b(b_),
c(s)
{
}
}
您可以使用的最接近的东西是可变模板:
struct foo
{
size_t a;
size_t b;
unsigned char c[32];
template<typename ... UnsignedChar>
constexpr foo(size_t a_, size_t b_, UnsignedChar ... s) :
a(a_),
b(b_),
c{s...} //use curly braces here
{
}
};
然后将其用作:
foo f(10, 20, 1,2,3,4,5, .....,32);
//a, b, -------s-----------
请注意,如果为第三个参数s
传递的值少于32个,则c
的其余元素将使用0
进行初始化;如果传递的值超过32个,编译器(我猜)将发出警告(或错误!)。
或者使用std::array<unsigned char, 32>
而不是unsigned char[32]
。
相关文章:
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 构造<int>具有 2 个字符串文字的向量
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 方便地对C++中的所有字符串文字进行模糊处理
- 比较 std::string 和 C 样式字符串文字
- 如何从char16_t字符串文字中读取双精度?
- 如果我在块中编写字符串文字,是否会从数据部分复制整个字符串数据?
- C++ 不能在cout中使用向量和字符串文字
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- C++:Unicode 字符串文字的可移植性
- 返回空字符串文字 VS. 返回空点 - 它们是一样的吗?
- 确保字符指针始终指向相同的字符串文字
- 如何按照 Google C++风格指南连接字符串文字?
- 通过 constexpr 中的 'const char *' glvalue 访问字符串文字的值会出错
- 字符串文字到 char 数组的转换如何在C++中实际工作
- 另一个字符串文字,UDL 迷宫
- strlen 是否针对字符串文字进行了优化?
- 用户定义的字符串文字为字符串null终止